version 1.926, 2009/12/08 14:44:17
|
version 1.948.2.4, 2010/05/18 01:24:42
|
Line 483 ENDAUTHORBRW
|
Line 483 ENDAUTHORBRW
|
|
|
sub coursebrowser_javascript { |
sub coursebrowser_javascript { |
my ($domainfilter,$sec_element,$formname,$role_element,$crstype) = @_; |
my ($domainfilter,$sec_element,$formname,$role_element,$crstype) = @_; |
my $wintitle = &mt('Course Browser'); |
my $wintitle = 'Course_Browser'; |
if ($crstype ne '') { |
if ($crstype eq 'Community') { |
$wintitle = &mt($crstype); |
$wintitle = 'Community_Browser'; |
} |
} |
my $id_functions = &javascript_index_functions(); |
my $id_functions = &javascript_index_functions(); |
my $output = ' |
my $output = ' |
Line 1127 sub help_open_topic {
|
Line 1127 sub help_open_topic {
|
$template.=' <a target="_top" href="'.$link.'" title="'.$title.'">' |
$template.=' <a target="_top" href="'.$link.'" title="'.$title.'">' |
.'<img src="'.$helpicon.'" border="0"' |
.'<img src="'.$helpicon.'" border="0"' |
.' alt="'.&mt('Help: [_1]',$topic).'"' |
.' alt="'.&mt('Help: [_1]',$topic).'"' |
.' title="'.$title.'"' |
.' title="'.$title.'" style="vertical-align:middle;"' |
.' /></a>'; |
.' /></a>'; |
if ($text ne "") { |
if ($text ne "") { |
$template.='</span>'; |
$template.='</span>'; |
Line 1719 sub create_workbook {
|
Line 1719 sub create_workbook {
|
my $workbook = Spreadsheet::WriteExcel->new('/home/httpd'.$filename); |
my $workbook = Spreadsheet::WriteExcel->new('/home/httpd'.$filename); |
if (! defined($workbook)) { |
if (! defined($workbook)) { |
$r->log_error("Error creating excel spreadsheet $filename: $!"); |
$r->log_error("Error creating excel spreadsheet $filename: $!"); |
$r->print('<p>'.&mt("Unable to create new Excel file. ". |
$r->print( |
"This error has been logged. ". |
'<p class="LC_error">' |
"Please alert your LON-CAPA administrator"). |
.&mt('Problems occurred in creating the new Excel file.') |
'</p>'); |
.' '.&mt('This error has been logged.') |
|
.' '.&mt('Please alert your LON-CAPA administrator.') |
|
.'</p>' |
|
); |
return (undef); |
return (undef); |
} |
} |
# |
# |
Line 1762 sub create_text_file {
|
Line 1765 sub create_text_file {
|
$fh = Apache::File->new('>/home/httpd'.$filename); |
$fh = Apache::File->new('>/home/httpd'.$filename); |
if (! defined($fh)) { |
if (! defined($fh)) { |
$r->log_error("Couldn't open $filename for output $!"); |
$r->log_error("Couldn't open $filename for output $!"); |
$r->print(&mt('Problems occurred in creating the output file. ' |
$r->print( |
.'This error has been logged. ' |
'<p class="LC_error">' |
.'Please alert your LON-CAPA administrator.')); |
.&mt('Problems occurred in creating the output file.') |
|
.' '.&mt('This error has been logged.') |
|
.' '.&mt('Please alert your LON-CAPA administrator.') |
|
.'</p>' |
|
); |
} |
} |
return ($fh,$filename) |
return ($fh,$filename) |
} |
} |
Line 3405 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 3420 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 3609 sub submlink {
|
Line 3701 sub submlink {
|
} |
} |
if (!$symb) { $symb=&Apache::lonnet::symbread(); } |
if (!$symb) { $symb=&Apache::lonnet::symbread(); } |
$symb=&escape($symb); |
$symb=&escape($symb); |
if ($target) { $target="target=\"$target\""; } |
if ($target) { $target=" target=\"$target\""; } |
return '<a href="/adm/grades?&command=submission&'. |
return |
'symb='.$symb.'&student='.$uname. |
'<a href="/adm/grades?command=submission'. |
'&userdom='.$udom.'" '.$target.'>'.$text.'</a>'; |
'&symb='.$symb. |
|
'&student='.$uname. |
|
'&userdom='.$udom.'"'. |
|
$target.'>'.$text.'</a>'; |
} |
} |
############################################## |
############################################## |
|
|
Line 4139 sub get_domainconf {
|
Line 4234 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 4175 sub get_domainconf {
|
Line 4293 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 4452 sub bodytag {
|
Line 4575 sub bodytag {
|
my ($title,$function,$addentries,$bodyonly,$domain,$forcereg, |
my ($title,$function,$addentries,$bodyonly,$domain,$forcereg, |
$no_nav_bar,$bgcolor,$no_inline_link,$args)=@_; |
$no_nav_bar,$bgcolor,$no_inline_link,$args)=@_; |
|
|
|
my $public; |
|
if ((($env{'user.name'} eq 'public') && ($env{'user.domain'} eq 'public')) |
|
|| ($env{'user.name'} eq '') && ($env{'user.domain'} eq '')) { |
|
$public = 1; |
|
} |
if (!$args->{'no_auto_mt_title'}) { $title = &mt($title); } |
if (!$args->{'no_auto_mt_title'}) { $title = &mt($title); } |
|
|
$function = &get_users_function() if (!$function); |
$function = &get_users_function() if (!$function); |
Line 4501 sub bodytag {
|
Line 4629 sub bodytag {
|
} |
} |
|
|
my $name = &plainname($env{'user.name'},$env{'user.domain'}); |
my $name = &plainname($env{'user.name'},$env{'user.domain'}); |
if ($env{'user.name'} eq 'public' && $env{'user.domain'} eq 'public') { |
if ($public) { |
undef($role); |
undef($role); |
} else { |
} else { |
$name = &aboutmewrapper($name,$env{'user.name'},$env{'user.domain'}); |
$name = &aboutmewrapper($name,$env{'user.name'},$env{'user.domain'}); |
} |
} |
|
|
my $titleinfo = '<h1>'.$title.'</h1>'; |
my $titleinfo = '<h1>'.$title.'</h1>'; |
# |
# |
# Extra info if you are the DC |
# Extra info if you are the DC |
Line 4545 sub bodytag {
|
Line 4673 sub bodytag {
|
return $bodytag; |
return $bodytag; |
} |
} |
|
|
$bodytag .= qq|<div id="LC_nav_bar">$name $role</div>|; |
unless ($env{'request.symb'} =~ m/\.page___\d+___/) { |
|
$bodytag .= qq|<div id="LC_nav_bar">$name $role</div>|; |
|
} |
|
|
$bodytag .= Apache::lonhtmlcommon::scripttag( |
$bodytag .= Apache::lonhtmlcommon::scripttag( |
Apache::lonmenu::utilityfunctions(), 'start'); |
Apache::lonmenu::utilityfunctions(), 'start'); |
Line 4558 sub bodytag {
|
Line 4688 sub bodytag {
|
$bodytag .= qq|<div id="LC_realm">$realm $dc_info</div>|; |
$bodytag .= qq|<div id="LC_realm">$realm $dc_info</div>|; |
|
|
#don't show menus for public users |
#don't show menus for public users |
if($env{'user.name'} ne 'public' && $env{'user.domain'} ne 'public'){ |
if (!$public){ |
$bodytag .= Apache::lonmenu::secondary_menu(); |
$bodytag .= Apache::lonmenu::secondary_menu(); |
$bodytag .= Apache::lonmenu::serverform(); |
$bodytag .= Apache::lonmenu::serverform(); |
$bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); |
$bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); |
Line 4575 sub bodytag {
|
Line 4705 sub bodytag {
|
$bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); |
$bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); |
} |
} |
|
|
#SD testing |
|
#$bodytag .= Apache::lonmenu::menubuttons($forcereg); |
|
return $bodytag; |
return $bodytag; |
} |
} |
|
|
Line 4754 sub standard_css {
|
Line 4882 sub standard_css {
|
my $table_header = '#DDDDDD'; |
my $table_header = '#DDDDDD'; |
my $feedback_link_bg = '#BBBBBB'; |
my $feedback_link_bg = '#BBBBBB'; |
my $lg_border_color = '#C8C8C8'; |
my $lg_border_color = '#C8C8C8'; |
|
my $button_hover = '#BF2317'; |
|
|
my $border = ($env{'browser.type'} eq 'explorer' || |
my $border = ($env{'browser.type'} eq 'explorer' || |
$env{'browser.type'} eq 'safari' ) ? '0 2px 0 2px' |
$env{'browser.type'} eq 'safari' ) ? '0 2px 0 2px' |
: '0 3px 0 4px'; |
: '0 3px 0 4px'; |
|
|
|
|
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 4768 body {
|
Line 4904 body {
|
color:$font; |
color:$font; |
} |
} |
|
|
a:focus { |
+a:focus, |
|
+a:focus img { |
color: red; |
color: red; |
background: yellow; |
background: yellow; |
} |
} |
Line 4785 form, .inline {
|
Line 4922 form, .inline {
|
vertical-align:middle; |
vertical-align:middle; |
} |
} |
|
|
/* just for tests */ |
|
.LC_400Box { |
.LC_400Box { |
width:400px; |
width:400px; |
} |
} |
/* end */ |
|
|
.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; |
Line 4903 table#LC_title_bar {
|
Line 5052 table#LC_title_bar {
|
} |
} |
|
|
table#LC_title_bar, |
table#LC_title_bar, |
table.LC_breadcrumbs, |
table.LC_breadcrumbs, /* obsolete? */ |
table#LC_title_bar.LC_with_remote { |
table#LC_title_bar.LC_with_remote { |
width: 100%; |
width: 100%; |
border-color: $pgbg; |
border-color: $pgbg; |
Line 4916 table#LC_title_bar.LC_with_remote {
|
Line 5065 table#LC_title_bar.LC_with_remote {
|
margin: 0; |
margin: 0; |
} |
} |
|
|
/* #SD START (work in progress)*/ |
ul.LC_breadcrumb_tools_outerlist { |
|
|
ul.LC_bct { |
|
margin: 0; |
margin: 0; |
padding: 0; |
padding: 0; |
|
position: relative; |
|
list-style: none; |
} |
} |
ul.LC_bct ol { |
ul.LC_breadcrumb_tools_outerlist li { |
display: inline; |
|
} |
|
ul.LC_bct ul { |
|
display: inline; |
display: inline; |
padding: 0; |
|
} |
|
ul.LC_bct li { |
|
list-style-type: none; |
|
display: inline; |
|
} |
|
|
|
|
|
ul.LC_breadcrumb_tools { |
|
} |
|
|
|
li.LC_breadcrumb_tools { |
|
} |
|
li.LC_breadcrumb_tools img{ |
|
vertical-align: middle; |
|
} |
} |
|
|
.LC_breadcrumb_tools_A { |
.LC_breadcrumb_tools_navigation { |
margin: 0 0 0 1em; |
padding: 0; |
} |
margin: 0; |
.LC_breadcrumb_tools_B { |
float: left; |
float: right; |
|
margin-top: 0.4em; |
|
} |
} |
.LC_breadcrumb_tools_C { |
.LC_breadcrumb_tools_tools { |
margin: 0 1em 0 0; |
padding: 0; |
|
margin: 0; |
float: right; |
float: right; |
} |
} |
/* #SD END */ |
|
|
|
table#LC_title_bar td { |
table#LC_title_bar td { |
background: $tabbg; |
background: $tabbg; |
Line 4986 td.LC_table_cell_checkbox {
|
Line 5115 td.LC_table_cell_checkbox {
|
background: $sidebg; |
background: $sidebg; |
border-bottom: 1px solid $lg_border_color; |
border-bottom: 1px solid $lg_border_color; |
line-height: 2.5em; |
line-height: 2.5em; |
/* SD working here |
overflow: hidden; |
height: 2.5em; |
|
overflow: hidden; */ |
|
margin: 0; |
margin: 0; |
padding: 0; |
padding: 0; |
} |
} |
Line 5019 td.LC_table_cell_checkbox {
|
Line 5146 td.LC_table_cell_checkbox {
|
padding-left:3px; |
padding-left:3px; |
} |
} |
|
|
|
.LC_menubuttons_inline_text img{ |
|
vertical-align: middle; |
|
} |
|
|
|
li.LC_menubuttons_inline_text img,a { |
|
cursor:pointer; |
|
} |
|
|
.LC_menubuttons_link { |
.LC_menubuttons_link { |
text-decoration: none; |
text-decoration: none; |
} |
} |
Line 5038 td.LC_menubuttons_text {
|
Line 5173 td.LC_menubuttons_text {
|
background: $tabbg; |
background: $tabbg; |
} |
} |
|
|
table.LC_data_table, |
table.LC_data_table { |
table.LC_mail_list { |
|
border: 1px solid #000000; |
border: 1px solid #000000; |
border-collapse: separate; |
border-collapse: separate; |
border-spacing: 1px; |
border-spacing: 1px; |
Line 5065 table.LC_nested {
|
Line 5199 table.LC_nested {
|
width: 100%; |
width: 100%; |
} |
} |
|
|
|
.ui-accordion, |
|
.ui-accordion table.LC_data_table, |
|
.ui-accordion table.LC_nested_outer{ |
|
border: 0px; |
|
border-spacing: 0px; |
|
margin: 3px; |
|
} |
|
|
table.LC_data_table tr th, |
table.LC_data_table tr th, |
table.LC_calendar tr th, |
table.LC_calendar tr th, |
table.LC_mail_list tr th, |
|
table.LC_prior_tries tr th, |
table.LC_prior_tries tr th, |
table.LC_innerpickbox tr th { |
table.LC_innerpickbox tr th { |
font-weight: bold; |
font-weight: bold; |
Line 5120 table.LC_data_table tr td.LC_leftcol_hea
|
Line 5261 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 5174 table.LC_nested tr td.LC_right_item {
|
Line 5322 table.LC_nested tr td.LC_right_item {
|
text-align: right; |
text-align: right; |
} |
} |
|
|
|
.ui-accordion table.LC_nested tr.LC_odd_row td.LC_left_item, |
|
.ui-accordion table.LC_nested tr.LC_even_row td.LC_left_item { |
|
text-align: right; |
|
width: 40%; |
|
padding-right:10px; |
|
vertical-align: top; |
|
padding: 5px; |
|
} |
|
|
|
.ui-accordion table.LC_nested tr.LC_odd_row td.LC_right_item, |
|
.ui-accordion table.LC_nested tr.LC_even_row td.LC_right_item { |
|
text-align: left; |
|
width: 60%; |
|
padding: 2px 4px; |
|
} |
|
|
table.LC_nested tr.LC_odd_row td { |
table.LC_nested tr.LC_odd_row td { |
background-color: #EEEEEE; |
background-color: #EEEEEE; |
} |
} |
Line 5215 table.LC_calendar tr td.LC_calendar_day_
|
Line 5379 table.LC_calendar tr td.LC_calendar_day_
|
background-color: $data_table_highlight; |
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; |
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; |
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; |
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; |
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; |
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; |
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; |
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; |
background-color: $mail_other_hover; |
} |
} |
|
*/ |
|
|
table.LC_data_table tr > td.LC_browser_file, |
table.LC_data_table tr > td.LC_browser_file, |
table.LC_data_table tr > td.LC_browser_file_published { |
table.LC_data_table tr > td.LC_browser_file_published { |
Line 5275 table.LC_data_table tr > td.LC_roles_is
|
Line 5445 table.LC_data_table tr > td.LC_roles_is
|
} |
} |
|
|
table.LC_data_table tr > td.LC_roles_future { |
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 { |
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 { |
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 { |
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 { |
table.LC_data_table tr > td.LC_roles_selected { |
background: #11CC55; |
border-right: 8px solid #11CC55; |
} |
} |
|
|
span.LC_current_location { |
span.LC_current_location { |
Line 5753 div.LC_clear_float_footer {
|
Line 5923 div.LC_clear_float_footer {
|
} |
} |
|
|
div.LC_grade_show_user { |
div.LC_grade_show_user { |
margin-top: 20px; |
/* border-left: 5px solid $sidebg; */ |
border: 1px solid black; |
border-top: 5px solid #000000; |
|
margin: 50px 0 0 0; |
|
padding: 15px 0 5px 10px; |
} |
} |
|
|
div.LC_grade_user_name { |
div.LC_grade_show_user_odd_row { |
background: #DDDDEE; |
/* border-left: 5px solid #000000; */ |
border-bottom: 1px solid black; |
|
font-weight: bold; |
|
font-size: large; |
|
} |
} |
|
|
div.LC_grade_show_user_odd_row div.LC_grade_user_name { |
div.LC_grade_show_user div.LC_Box { |
background: #DDEEDD; |
margin-right: 50px; |
} |
} |
|
|
div.LC_grade_show_problem, |
|
div.LC_grade_submissions, |
div.LC_grade_submissions, |
div.LC_grade_message_center, |
div.LC_grade_message_center, |
div.LC_grade_info_links, |
div.LC_grade_info_links { |
div.LC_grade_assign { |
|
margin: 5px; |
margin: 5px; |
width: 99%; |
width: 99%; |
background: #FFFFFF; |
background: #FFFFFF; |
} |
} |
|
|
div.LC_grade_show_problem_header, |
|
div.LC_grade_submissions_header, |
div.LC_grade_submissions_header, |
div.LC_grade_message_center_header, |
div.LC_grade_message_center_header { |
div.LC_grade_assign_header { |
|
font-weight: bold; |
font-weight: bold; |
font-size: large; |
font-size: large; |
} |
} |
|
|
div.LC_grade_show_problem_problem, |
|
div.LC_grade_submissions_body, |
div.LC_grade_submissions_body, |
div.LC_grade_message_center_body, |
div.LC_grade_message_center_body { |
div.LC_grade_assign_body { |
|
border: 1px solid black; |
border: 1px solid black; |
width: 99%; |
width: 99%; |
background: #FFFFFF; |
background: #FFFFFF; |
} |
} |
|
|
span.LC_grade_check_note { |
|
font-weight: normal; |
|
font-size: medium; |
|
display: inline; |
|
position: absolute; |
|
right: 1em; |
|
} |
|
|
|
table.LC_scantron_action { |
table.LC_scantron_action { |
width: 100%; |
width: 100%; |
} |
} |
Line 5836 div.LC_edit_problem_header_title {
|
Line 5991 div.LC_edit_problem_header_title {
|
} |
} |
|
|
table.LC_edit_problem_header_title { |
table.LC_edit_problem_header_title { |
font-size: larger; |
|
font-weight: bold; |
|
width: 100%; |
width: 100%; |
border-color: $pgbg; |
|
border-style: solid; |
|
border-width: $border; |
|
background: $tabbg; |
background: $tabbg; |
border-collapse: collapse; |
|
padding: 0; |
|
} |
} |
|
|
div.LC_edit_problem_discards { |
div.LC_edit_problem_discards { |
Line 5877 div.LC_createcourse {
|
Line 6025 div.LC_createcourse {
|
display:none; |
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, |
a:hover, |
ol.LC_primary_menu a:hover, |
ol.LC_primary_menu a:hover, |
ol#LC_MenuBreadcrumbs a:hover, |
ol#LC_MenuBreadcrumbs a:hover, |
Line 5891 ol#LC_PathBreadcrumbs a:hover,
|
Line 6032 ol#LC_PathBreadcrumbs a:hover,
|
ul#LC_secondary_menu a:hover, |
ul#LC_secondary_menu a:hover, |
.LC_FormSectionClearButton input:hover |
.LC_FormSectionClearButton input:hover |
ul.LC_TabContent li:hover a { |
ul.LC_TabContent li:hover a { |
color:#BF2317; |
color:$button_hover; |
text-decoration:none; |
text-decoration:none; |
} |
} |
|
|
Line 5958 fieldset > legend {
|
Line 6099 fieldset > legend {
|
|
|
#LC_nav_bar { |
#LC_nav_bar { |
float: left; |
float: left; |
margin: 0.2em 0 0 0; |
margin: 0; |
} |
} |
|
|
#LC_realm { |
#LC_realm { |
Line 5975 fieldset > legend {
|
Line 6116 fieldset > legend {
|
|
|
ol.LC_primary_menu { |
ol.LC_primary_menu { |
float: right; |
float: right; |
margin: 0.2em 0 0 0; |
margin: 0; |
|
} |
|
|
|
span.LC_new_message{ |
|
font-weight:bold; |
|
color: darkred; |
} |
} |
|
|
ol#LC_PathBreadcrumbs { |
ol#LC_PathBreadcrumbs { |
Line 5990 ol.LC_primary_menu li {
|
Line 6136 ol.LC_primary_menu li {
|
|
|
ol.LC_primary_menu li img { |
ol.LC_primary_menu li img { |
vertical-align: bottom; |
vertical-align: bottom; |
|
height: 1.1em; |
} |
} |
|
|
ol.LC_primary_menu a { |
ol.LC_primary_menu a { |
font-size: 90%; |
|
color: RGB(80, 80, 80); |
color: RGB(80, 80, 80); |
text-decoration: none; |
text-decoration: none; |
} |
} |
Line 6037 ul#LC_secondary_menu li a {
|
Line 6183 ul#LC_secondary_menu li a {
|
} |
} |
|
|
ul.LC_TabContent { |
ul.LC_TabContent { |
min-height:1.5em; |
min-height:20px; |
} |
} |
|
|
ul.LC_TabContent li { |
ul.LC_TabContent li { |
vertical-align:middle; |
vertical-align:middle; |
padding: 0 10px 0 10px; |
padding: 0 16px 0 10px; |
background-color:$tabbg; |
background-color:$tabbg; |
border-bottom:solid 1px $lg_border_color; |
border-bottom:solid 1px $lg_border_color; |
|
border-right: solid 1px $font; |
} |
} |
|
|
ul.LC_TabContent .right { |
ul.LC_TabContent .right { |
Line 6057 ul.LC_TabContent li {
|
Line 6204 ul.LC_TabContent li {
|
text-decoration:none; |
text-decoration:none; |
font-size:95%; |
font-size:95%; |
font-weight:bold; |
font-weight:bold; |
padding-right: 16px; |
min-height:20px; |
|
} |
|
|
|
ul.LC_TabContent li a:hover, |
|
ul.LC_TabContent li a:focus { |
|
color: $button_hover; |
|
background:none; |
|
outline:none; |
|
} |
|
|
|
ul.LC_TabContent li:hover { |
|
color: $button_hover; |
|
cursor:pointer; |
} |
} |
|
|
ul.LC_TabContent li:hover, |
|
ul.LC_TabContent li.active { |
ul.LC_TabContent li.active { |
|
color: $font; |
background:#FFFFFF url(/adm/lonIcons/open.gif) no-repeat scroll right center; |
background:#FFFFFF url(/adm/lonIcons/open.gif) no-repeat scroll right center; |
border-bottom:solid 2px #FFFFFF; |
border-bottom:solid 1px #FFFFFF; |
padding-right: 16px; |
cursor: default; |
} |
} |
|
|
|
ul.LC_TabContent li.active a { |
|
color:$font; |
|
background:#FFFFFF; |
|
outline: none; |
|
} |
#maincoursedoc { |
#maincoursedoc { |
clear:both; |
clear:both; |
} |
} |
Line 6085 ul.LC_TabContentBigger li {
|
Line 6249 ul.LC_TabContentBigger li {
|
color: #737373; |
color: #737373; |
} |
} |
|
|
|
ul.LC_TabContentBigger li.active { |
|
position: relative; |
|
top: 1px; |
|
} |
|
|
ul.LC_TabContentBigger li a { |
ul.LC_TabContentBigger li a { |
background:url('/adm/lonIcons/tabbgleft.gif') left bottom no-repeat; |
background:url('/adm/lonIcons/tabbgleft.gif') left bottom no-repeat; |
Line 6093 ul.LC_TabContentBigger li a {
|
Line 6261 ul.LC_TabContentBigger li a {
|
text-align: center; |
text-align: center; |
display: block; |
display: block; |
text-decoration: none; |
text-decoration: none; |
|
outline: none; |
} |
} |
|
|
ul.LC_TabContentBigger li:hover a, |
|
ul.LC_TabContentBigger li.active a { |
ul.LC_TabContentBigger li.active a { |
background:url('/adm/lonIcons/tabbgleft.gif') left top no-repeat; |
background:url('/adm/lonIcons/tabbgleft.gif') left top no-repeat; |
color:$font; |
color:$font; |
text-decoration: underline; |
|
} |
} |
|
|
|
|
ul.LC_TabContentBigger li b { |
ul.LC_TabContentBigger li b { |
background: url('/adm/lonIcons/tabbgright.gif') no-repeat right bottom; |
background: url('/adm/lonIcons/tabbgright.gif') no-repeat right bottom; |
display: block; |
display: block; |
float: left; |
float: left; |
padding: 0 30px; |
padding: 0 30px; |
|
border-bottom: 1px solid $lg_border_color; |
|
} |
|
|
|
ul.LC_TabContentBigger li:hover b { |
|
color:$button_hover; |
} |
} |
|
|
ul.LC_TabContentBigger li:hover b, |
|
ul.LC_TabContentBigger li.active b { |
ul.LC_TabContentBigger li.active b { |
background:url('/adm/lonIcons/tabbgright.gif') right top no-repeat; |
background:url('/adm/lonIcons/tabbgright.gif') right top no-repeat; |
color:$font; |
color:$font; |
border-bottom: 1px solid #FFFFFF; |
border: 0; |
|
cursor:default; |
} |
} |
|
|
|
|
ul.LC_CourseBreadcrumbs { |
ul.LC_CourseBreadcrumbs { |
background: $sidebg; |
background: $sidebg; |
line-height: 32px; |
line-height: 32px; |
Line 6131 ol#LC_MenuBreadcrumbs,
|
Line 6301 ol#LC_MenuBreadcrumbs,
|
ol#LC_PathBreadcrumbs { |
ol#LC_PathBreadcrumbs { |
padding-left: 10px; |
padding-left: 10px; |
margin: 0; |
margin: 0; |
list-style-position: inside; |
height: 2.5em; /* equal to #LC_breadcrumbs line-height */ |
/* SD working here |
|
white-space: nowrap; */ |
|
} |
} |
|
|
ol#LC_MenuBreadcrumbs li, |
ol#LC_MenuBreadcrumbs li, |
ol#LC_PathBreadcrumbs li, |
ol#LC_PathBreadcrumbs li, |
ul.LC_CourseBreadcrumbs li { |
ul.LC_CourseBreadcrumbs li { |
display: inline; |
display: inline; |
white-space: nowrap; |
white-space: normal; |
/* SD working here |
|
white-space: normal; */ |
|
} |
} |
|
|
ol#LC_MenuBreadcrumbs li a, |
ol#LC_MenuBreadcrumbs li a, |
Line 6395 ul.LC_funclist {
|
Line 6561 ul.LC_funclist {
|
padding: 0.5em 1em 0.5em 0; |
padding: 0.5em 1em 0.5em 0; |
} |
} |
|
|
|
ul.LC_funclist > li:first-child { |
|
font-weight:bold; |
|
margin-left:0.8em; |
|
} |
|
|
ul.LC_funclist + ul.LC_funclist { |
ul.LC_funclist + ul.LC_funclist { |
/* |
/* |
left border as a seperator if we have more than |
left border as a seperator if we have more than |
Line 6415 ul.LC_funclist li {
|
Line 6586 ul.LC_funclist li {
|
line-height: 150%; |
line-height: 150%; |
} |
} |
|
|
|
.ui-accordion .LC_advanced_toggle { |
|
float: right; |
|
font-size: 90%; |
|
padding: 0px 4px |
|
} |
|
|
END |
END |
} |
} |
Line 9989 sub check_clone {
|
Line 10165 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 10020 sub check_clone {
|
Line 10196 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 10029 sub check_clone {
|
Line 10205 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 10090 sub construct_course {
|
Line 10268 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; |
|
|
# |
# |
Line 10113 sub construct_course {
|
Line 10299 sub construct_course {
|
$cenv{'url'}=$oldcenv{'url'}; |
$cenv{'url'}=$oldcenv{'url'}; |
# Restore title |
# Restore title |
$cenv{'description'}=$oldcenv{'description'}; |
$cenv{'description'}=$oldcenv{'description'}; |
|
# Restore creation date, creator and creation context. |
|
$cenv{'internal.created'}=$oldcenv{'internal.created'}; |
|
$cenv{'internal.creator'}=$oldcenv{'internal.creator'}; |
|
$cenv{'internal.creationcontext'}=$oldcenv{'internal.creationcontext'}; |
# Mark as cloned |
# Mark as cloned |
$cenv{'clonedfrom'}=$cloneid; |
$cenv{'clonedfrom'}=$cloneid; |
# Need to clone grading mode |
# Need to clone grading mode |