version 1.939, 2010/02/12 17:35:49
|
version 1.948, 2010/03/08 14:51:14
|
Line 3412 sub get_previous_attempt {
|
Line 3412 sub get_previous_attempt {
|
} |
} |
$prevattempts=&start_data_table().&start_data_table_header_row(); |
$prevattempts=&start_data_table().&start_data_table_header_row(); |
$prevattempts.='<th>'.&mt('History').'</th>'; |
$prevattempts.='<th>'.&mt('History').'</th>'; |
|
my %typeparts; |
|
my $showsurv=&Apache::lonnet::allowed('vas',$env{'request.course.id'}); |
foreach my $key (sort(keys(%lasthash))) { |
foreach my $key (sort(keys(%lasthash))) { |
my ($ign,@parts) = split(/\./,$key); |
my ($ign,@parts) = split(/\./,$key); |
if ($#parts > 0) { |
if ($#parts > 0) { |
my $data=$parts[-1]; |
my $data=$parts[-1]; |
pop(@parts); |
pop(@parts); |
$prevattempts.='<th>'.&mt('Part ').join('.',@parts).'<br />'.$data.' </th>'; |
if ($data eq 'type') { |
|
unless ($showsurv) { |
|
my $id = join(',',@parts); |
|
$typeparts{$ign.'.'.$id} = $lasthash{$key}; |
|
} |
|
delete($lasthash{$key}); |
|
} else { |
|
$prevattempts.='<th>'.&mt('Part ').join('.',@parts).'<br />'.$data.' </th>'; |
|
} |
} else { |
} else { |
if ($#parts == 0) { |
if ($#parts == 0) { |
$prevattempts.='<th>'.$parts[0].'</th>'; |
$prevattempts.='<th>'.$parts[0].'</th>'; |
Line 3427 sub get_previous_attempt {
|
Line 3437 sub get_previous_attempt {
|
} |
} |
} |
} |
$prevattempts.=&end_data_table_header_row(); |
$prevattempts.=&end_data_table_header_row(); |
|
my %lasthidden; |
if ($getattempt eq '') { |
if ($getattempt eq '') { |
for ($version=1;$version<=$returnhash{'version'};$version++) { |
for ($version=1;$version<=$returnhash{'version'};$version++) { |
$prevattempts.=&start_data_table_row(). |
my @hidden; |
'<td>'.&mt('Transaction [_1]',$version).'</td>'; |
if (%typeparts) { |
foreach my $key (sort(keys(%lasthash))) { |
foreach my $id (keys(%typeparts)) { |
my $value = &format_previous_attempt_value($key, |
if (($returnhash{$version.':'.$id.'.type'} eq 'anonsurvey') || ($returnhash{$version.':'.$id.'.type'} eq 'anonsurveycred')) { |
$returnhash{$version.':'.$key}); |
push(@hidden,$id); |
$prevattempts.='<td>'.$value.' </td>'; |
$lasthidden{$id} = 1; |
} |
} elsif ($lasthidden{$id}) { |
$prevattempts.=&end_data_table_row(); |
if (exists($returnhash{$version.':'.$id.'.award'})) { |
|
delete($lasthidden{$id}); |
|
} |
|
} |
|
} |
|
} |
|
$prevattempts.=&start_data_table_row(). |
|
'<td>'.&mt('Transaction [_1]',$version).'</td>'; |
|
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.='<td>'.$value.' </td>'; |
|
} else { |
|
$prevattempts.='<td> </td>'; |
|
} |
|
} else { |
|
if ($key =~ /\./) { |
|
my $value = &format_previous_attempt_value($key, |
|
$returnhash{$version.':'.$key}); |
|
$prevattempts.='<td>'.$value.' </td>'; |
|
} else { |
|
$prevattempts.='<td> </td>'; |
|
} |
|
} |
|
} |
|
} else { |
|
foreach my $key (sort(keys(%lasthash))) { |
|
my $value = &format_previous_attempt_value($key, |
|
$returnhash{$version.':'.$key}); |
|
$prevattempts.='<td>'.$value.' </td>'; |
|
} |
|
} |
|
$prevattempts.=&end_data_table_row(); |
} |
} |
} |
} |
|
my @currhidden = keys(%lasthidden); |
$prevattempts.=&start_data_table_row().'<td>'.&mt('Current').'</td>'; |
$prevattempts.=&start_data_table_row().'<td>'.&mt('Current').'</td>'; |
foreach my $key (sort(keys(%lasthash))) { |
foreach my $key (sort(keys(%lasthash))) { |
my $value = &format_previous_attempt_value($key,$lasthash{$key}); |
if (%typeparts) { |
if ($key =~/$regexp$/ && (defined &$gradesub)) {$value = &$gradesub($value)} |
my $hidden; |
$prevattempts.='<td>'.$value.' </td>'; |
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.='<td>'.$value.' </td>'; |
|
} else { |
|
$prevattempts.='<td> </td>'; |
|
} |
|
} else { |
|
my $value = &format_previous_attempt_value($key,$lasthash{$key}); |
|
if ($key =~/$regexp$/ && (defined &$gradesub)) { |
|
$value = &$gradesub($value); |
|
} |
|
$prevattempts.='<td>'.$value.' </td>'; |
|
} |
|
} else { |
|
my $value = &format_previous_attempt_value($key,$lasthash{$key}); |
|
if ($key =~/$regexp$/ && (defined &$gradesub)) { |
|
$value = &$gradesub($value); |
|
} |
|
$prevattempts.='<td>'.$value.' </td>'; |
|
} |
} |
} |
$prevattempts.= &end_data_table_row().&end_data_table(); |
$prevattempts.= &end_data_table_row().&end_data_table(); |
} else { |
} else { |
Line 4146 sub get_domainconf {
|
Line 4231 sub get_domainconf {
|
if (defined($cached)) { return %{$result}; } |
if (defined($cached)) { return %{$result}; } |
|
|
my %domconfig = &Apache::lonnet::get_dom('configuration', |
my %domconfig = &Apache::lonnet::get_dom('configuration', |
['login','rolecolors'],$udom); |
['login','rolecolors','autoenroll'],$udom); |
my (%designhash,%legacy); |
my (%designhash,%legacy); |
if (keys(%domconfig) > 0) { |
if (keys(%domconfig) > 0) { |
if (ref($domconfig{'login'}) eq 'HASH') { |
if (ref($domconfig{'login'}) eq 'HASH') { |
if (keys(%{$domconfig{'login'}})) { |
if (keys(%{$domconfig{'login'}})) { |
foreach my $key (keys(%{$domconfig{'login'}})) { |
foreach my $key (keys(%{$domconfig{'login'}})) { |
if (ref($domconfig{'login'}{$key}) eq 'HASH') { |
if (ref($domconfig{'login'}{$key}) eq 'HASH') { |
foreach my $img (keys(%{$domconfig{'login'}{$key}})) { |
if ($key eq 'loginvia') { |
$designhash{$udom.'.login.'.$key.'_'.$img} = |
if (ref($domconfig{'login'}{'loginvia'}) eq 'HASH') { |
$domconfig{'login'}{$key}{$img}; |
my @ids = &Apache::lonnet::current_machine_ids(); |
|
foreach my $hostname (@ids) { |
|
if (ref($domconfig{'login'}{'loginvia'}{$hostname}) eq 'HASH') { |
|
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 { |
} else { |
$designhash{$udom.'.login.'.$key}=$domconfig{'login'}{$key}; |
$designhash{$udom.'.login.'.$key}=$domconfig{'login'}{$key}; |
Line 4182 sub get_domainconf {
|
Line 4290 sub get_domainconf {
|
} else { |
} else { |
$legacy{'rolecolors'} = 1; |
$legacy{'rolecolors'} = 1; |
} |
} |
|
if (ref($domconfig{'autoenroll'}) eq 'HASH') { |
|
if ($domconfig{'autoenroll'}{'co-owners'}) { |
|
$designhash{$udom.'.autoassign.co-owners'}=$domconfig{'autoenroll'}{'co-owners'}; |
|
} |
|
} |
if (keys(%legacy) > 0) { |
if (keys(%legacy) > 0) { |
my %legacyhash = &get_legacy_domconf($udom); |
my %legacyhash = &get_legacy_domconf($udom); |
foreach my $item (keys(%legacyhash)) { |
foreach my $item (keys(%legacyhash)) { |
Line 4768 sub standard_css {
|
Line 4881 sub standard_css {
|
|
|
|
|
return <<END; |
return <<END; |
|
|
|
/* needed for iframe to allow 100% height in FF */ |
|
body, html { |
|
margin: 0; |
|
padding: 0 0.5%; |
|
height: 99%; /* to avoid scrollbars */ |
|
} |
|
|
body { |
body { |
font-family: $sans; |
font-family: $sans; |
line-height:130%; |
line-height:130%; |
Line 4796 form, .inline {
|
Line 4917 form, .inline {
|
width:400px; |
width:400px; |
} |
} |
|
|
|
.LC_iframecontainer { |
|
width: 98%; |
|
margin: 0; |
|
position: fixed; |
|
top: 8.5em; |
|
bottom: 0; |
|
} |
|
|
|
.LC_iframecontainer iframe{ |
|
border: none; |
|
width: 100%; |
|
height: 100%; |
|
} |
|
|
.LC_filename { |
.LC_filename { |
font-family: $mono; |
font-family: $mono; |
white-space:pre; |
white-space:pre; |
Line 5113 table.LC_data_table tr td.LC_leftcol_hea
|
Line 5248 table.LC_data_table tr td.LC_leftcol_hea
|
|
|
table.LC_data_table tr.LC_empty_row td, |
table.LC_data_table tr.LC_empty_row td, |
table.LC_nested tr.LC_empty_row td { |
table.LC_nested tr.LC_empty_row td { |
background-color: #FFFFFF; |
|
font-weight: bold; |
font-weight: bold; |
font-style: italic; |
font-style: italic; |
text-align: center; |
text-align: center; |
padding: 8px; |
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 { |
table.LC_caption { |
} |
} |
|
|
Line 5768 div.LC_clear_float_footer {
|
Line 5910 div.LC_clear_float_footer {
|
} |
} |
|
|
div.LC_grade_show_user { |
div.LC_grade_show_user { |
border-left: 5px solid $sidebg; |
/* border-left: 5px solid $sidebg; */ |
margin: 0; |
border-top: 5px solid #000000; |
|
margin: 50px 0 0 0; |
padding: 15px 0 5px 10px; |
padding: 15px 0 5px 10px; |
} |
} |
|
|
div.LC_grade_show_user_odd_row { |
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, |
div.LC_grade_submissions, |
Line 9981 sub check_clone {
|
Line 10128 sub check_clone {
|
my $clonehome=&Apache::lonnet::homeserver($clonecrsunum,$clonecrsudom); |
my $clonehome=&Apache::lonnet::homeserver($clonecrsunum,$clonecrsudom); |
my $clonemsg; |
my $clonemsg; |
my $can_clone = 0; |
my $can_clone = 0; |
my $lctype = lc($args->{'type'}); |
my $lctype = lc($args->{'crstype'}); |
if ($lctype ne 'community') { |
if ($lctype ne 'community') { |
$lctype = 'course'; |
$lctype = 'course'; |
} |
} |
if ($clonehome eq 'no_host') { |
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'}); |
$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 { |
} 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'}); |
$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 { |
} else { |
my %clonedesc = &Apache::lonnet::coursedescription($cloneid,{'one_time' => 1}); |
my %clonedesc = &Apache::lonnet::coursedescription($cloneid,{'one_time' => 1}); |
if ($args->{'type'} eq 'Community') { |
if ($args->{'crstype'} eq 'Community') { |
if ($clonedesc{'type'} ne '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'}); |
$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); |
return ($can_clone, $clonemsg, $cloneid, $clonehome); |
Line 10012 sub check_clone {
|
Line 10159 sub check_clone {
|
$can_clone = 1; |
$can_clone = 1; |
} else { |
} else { |
my $ccrole = 'cc'; |
my $ccrole = 'cc'; |
if ($args->{'type'} eq 'Community') { |
if ($args->{'crstype'} eq 'Community') { |
$ccrole = 'co'; |
$ccrole = 'co'; |
} |
} |
my %roleshash = |
my %roleshash = |
Line 10021 sub check_clone {
|
Line 10168 sub check_clone {
|
'userroles',['active'],[$ccrole], |
'userroles',['active'],[$ccrole], |
[$args->{'clonedomain'}]); |
[$args->{'clonedomain'}]); |
if (($roleshash{$args->{'clonecourse'}.':'.$args->{'clonedomain'}.':'.$ccrole}) || (grep(/^\Q$args->{'ccuname'}\E:\Q$args->{'ccdomain'}\E$/,@cloners))) { |
if (($roleshash{$args->{'clonecourse'}.':'.$args->{'clonedomain'}.':'.$ccrole}) || (grep(/^\Q$args->{'ccuname'}\E:\Q$args->{'ccdomain'}\E$/,@cloners))) { |
$can_clone = 1; |
$can_clone = 1; |
} else { |
} elsif (&Apache::lonnet::is_course_owner($args->{'clonedomain'},$args->{'clonecourse'},$args->{'ccuname'},$args->{'ccdomain'})) { |
if ($args->{'type'} eq 'Community') { |
$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'}); |
$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 { |
} 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'}); |
$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'}); |
Line 10082 sub construct_course {
|
Line 10231 sub construct_course {
|
# if anyone ever decides to not show this, and Utils::Course::new |
# if anyone ever decides to not show this, and Utils::Course::new |
# will need to be suitably modified. |
# will need to be suitably modified. |
$outcome .= &mt('New LON-CAPA [_1] ID: [_2]',$crstype,$$courseid).$linefeed; |
$outcome .= &mt('New LON-CAPA [_1] ID: [_2]',$crstype,$$courseid).$linefeed; |
|
if ($$courseid =~ /^error:/) { |
|
return (0,$outcome); |
|
} |
|
|
# |
# |
# Check if created correctly |
# Check if created correctly |
# |
# |
($$crsudom,$$crsunum)= &LONCAPA::split_courseid($$courseid); |
($$crsudom,$$crsunum)= &LONCAPA::split_courseid($$courseid); |
my $crsuhome=&Apache::lonnet::homeserver($$crsunum,$$crsudom); |
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; |
$outcome .= &mt('Created on').': '.$crsuhome.$linefeed; |
|
|
# |
# |