version 1.126, 2013/05/15 18:45:29
|
version 1.131, 2013/08/31 18:58:57
|
Line 73 sub handler {
|
Line 73 sub handler {
|
my %courseenv=&Apache::lonnet::dump('environment',$cdom,$cnum); |
my %courseenv=&Apache::lonnet::dump('environment',$cdom,$cnum); |
my $crstype = &Apache::loncommon::course_type(); |
my $crstype = &Apache::loncommon::course_type(); |
|
|
# ------------------------------------------------------------ Print the screen |
|
|
|
if ($target eq 'tex') { |
|
$r->print(&Apache::lonprintout::print_latex_header($env{'form.latex_type'})); |
|
} |
|
|
|
# --------------------------------------------------------------- Force Student |
# --------------------------------------------------------------- Force Student |
my ($forceedit,$forcestudent); |
my ($forceedit,$forcestudent); |
if ($env{'form.forceedit'}) { $forceedit=1; } |
if ($env{'form.forceedit'}) { $forceedit=1; } |
Line 124 sub handler {
|
Line 118 sub handler {
|
if ($filecontents eq -1) { |
if ($filecontents eq -1) { |
$r->print(&mt('Syllabus file unavailable')); |
$r->print(&mt('Syllabus file unavailable')); |
} elsif ($filetype eq 'tex') { |
} elsif ($filetype eq 'tex') { |
my $result = &Apache::lontexconvert::converted(\$filecontents, |
if ($target eq 'tex') { |
$env{'form.texengine'}); |
$r->print($filecontents); |
my %args; |
} else { |
&get_breadcrumbs($cdom,$cnum,$crstype,\%args); |
my $result = &Apache::lontexconvert::converted(\$filecontents, |
$r->print(&Apache::loncommon::start_page("Syllabus",undef,\%args). |
$env{'form.texengine'}); |
$result. |
my %args; |
&Apache::loncommon::end_page()); |
&get_breadcrumbs($cdom,$cnum,$crstype,\%args); |
|
$r->print(&Apache::loncommon::start_page("Syllabus",undef,\%args). |
|
$result. |
|
&Apache::loncommon::end_page()); |
|
} |
} else { |
} else { |
my %mystyle; |
my %mystyle; |
|
unless ($target eq 'tex') { |
|
$target = 'web'; |
|
} |
&Apache::structuretags::reset_problem_globals(); |
&Apache::structuretags::reset_problem_globals(); |
my $oldfile = $env{'request.filename'}; |
my $oldfile = $env{'request.filename'}; |
$env{'request.filename'} = $item; |
$env{'request.filename'} = $item; |
my $result = &Apache::lonxml::xmlparse($r,'web',$filecontents, |
my $result = &Apache::lonxml::xmlparse($r,$target,$filecontents, |
'',%mystyle); |
'',%mystyle); |
&Apache::structuretags::reset_problem_globals(); |
&Apache::structuretags::reset_problem_globals(); |
&Apache::lonhomework::finished_parsing(); |
&Apache::lonhomework::finished_parsing(); |
Line 145 sub handler {
|
Line 146 sub handler {
|
$r->print($result); |
$r->print($result); |
} |
} |
} else { |
} else { |
$r->print(&Apache::lonwrapper::wrapper($item)); |
if ($target eq 'tex') { |
|
$r->print(&Apache::lonprintout::print_latex_header($env{'form.latex_type'}). |
|
' \strut \\\\ \textbf{'.&mt('Syllabus').'} \strut \\\\ '. |
|
&mt('Unsupported file type.').' \strut \\\\ '. |
|
&mt('Print the syllabus directly from your web browser'). |
|
'\end{document}'); |
|
} else { |
|
$r->print(&Apache::lonwrapper::wrapper($item)); |
|
} |
} |
} |
return OK; |
return OK; |
} |
} |
} elsif ($external=~/\w/) { |
} elsif ($external=~/\w/) { |
unless ($allowed && $forceedit) { |
unless ($allowed && $forceedit) { |
$r->print(&Apache::lonwrapper::wrapper($external)); |
if ($target eq 'tex') { |
|
$r->print(&Apache::lonprintout::print_latex_header($env{'form.latex_type'}). |
|
' \strut \\\\ \textbf{'.&mt('Syllabus').'} \strut \\\\ '.$external.' '. |
|
' \strut \\\\ '.&mt('Print the syllabus directly from your web browser'). |
|
'\end{document}'); |
|
} else { |
|
$r->print(&Apache::lonwrapper::wrapper($external)); |
|
} |
return OK; |
return OK; |
} |
} |
} |
} |
|
|
|
# ------------------------------------------------------------ Print the screen |
|
|
|
if ($target eq 'tex') { |
|
$r->print(&Apache::lonprintout::print_latex_header($env{'form.latex_type'})); |
|
} |
|
|
# ------------------------------ The buck stops here: internal syllabus display |
# ------------------------------ The buck stops here: internal syllabus display |
# --------------------------------------------------------- The syllabus fields |
# --------------------------------------------------------- The syllabus fields |
Line 332 sub handler {
|
Line 353 sub handler {
|
} |
} |
&Apache::lontemplate::print_start_template($r,&mt('Personnel'),'LC_Box', |
&Apache::lontemplate::print_start_template($r,&mt('Personnel'),'LC_Box', |
'box_000_showpeople',$display); |
'box_000_showpeople',$display); |
$r->print(&get_personnel($r,$target,$cdom,$cnum,$allowed)); |
$r->print(&get_personnel($r,$target,$cdom,$cnum,$allowed,$crstype,\%syllabus)); |
&Apache::lontemplate::print_end_template($r); |
&Apache::lontemplate::print_end_template($r); |
} else { |
} else { |
unless ($hidepersonnel) { |
unless ($hidepersonnel) { |
&Apache::lontemplate::print_start_template($r,&mt('Personnel'),'LC_Box'); |
&Apache::lontemplate::print_start_template($r,&mt('Personnel'),'LC_Box'); |
$r->print(&get_personnel($r,$target,$cdom,$cnum,$allowed)); |
$r->print(&get_personnel($r,$target,$cdom,$cnum,$allowed,$crstype,\%syllabus)); |
&Apache::lontemplate::print_end_template($r); |
&Apache::lontemplate::print_end_template($r); |
} |
} |
} |
} |
} else { |
} else { |
unless ($hidepersonnel) { |
unless ($hidepersonnel) { |
$r->print(&get_personnel($r,$target,$cdom,$cnum,$allowed)); |
$r->print(&get_personnel($r,$target,$cdom,$cnum,$allowed,$crstype,%syllabus)); |
} |
} |
} |
} |
# -------------------------------------------------------------- Announcements? |
# -------------------------------------------------------------- Announcements? |
Line 406 sub handler {
|
Line 427 sub handler {
|
} |
} |
# ---------------------------------------------------------------- Get syllabus |
# ---------------------------------------------------------------- Get syllabus |
if (($syllabus{'uploaded.lastmodified'}) || ($allowed)) { |
if (($syllabus{'uploaded.lastmodified'}) || ($allowed)) { |
if ($allowed) { |
|
$r->print('<form method="post" action="">'); |
|
} |
|
|
|
my $url_include_handler = sub { |
my $url_include_handler = sub { |
my ($r, $field, $message, $group, $data_ref, $fields_ref, $target, $allowed, $display) = @_; |
my ($r, $field, $message, $group, $data_ref, $fields_ref, $target, $allowed, $display) = @_; |
my %data = %{$data_ref}; |
my %data = %{$data_ref}; |
Line 456 sub handler {
|
Line 473 sub handler {
|
$target, $allowed, Apache::lontemplate->RICH_TEXT_DETECT_HTML, \%custom_hash, |
$target, $allowed, Apache::lontemplate->RICH_TEXT_DETECT_HTML, \%custom_hash, |
undef,\%displayfields,\%noshow); |
undef,\%displayfields,\%noshow); |
if ($allowed) { |
if ($allowed) { |
$r->print('</form>'. |
$r->print('</div></form>'. |
&Apache::lonhtmlcommon::htmlareaselectactive()); |
&Apache::lonhtmlcommon::htmlareaselectactive()); |
} |
} |
} else { |
} else { |
Line 940 sub fields_check_uncheck {
|
Line 957 sub fields_check_uncheck {
|
} |
} |
|
|
sub get_personnel { |
sub get_personnel { |
my ($r,$target,$cdom,$cnum,$allowed) = @_; |
my ($r,$target,$cdom,$cnum,$allowed,$crstype,$syllabus) = @_; |
|
my (%hiddenroles,%hiddenusers); |
|
if (ref($syllabus) eq 'HASH') { |
|
if (ref($syllabus->{'personnel'}) eq 'HASH') { |
|
if ($syllabus->{'personnel'}{'hiderole'}) { |
|
map { $hiddenroles{$_} = 1; } split(/,/,$syllabus->{'personnel'}{'hiderole'}); |
|
} |
|
if ($syllabus->{'personnel'}{'hideuser'}) { |
|
map { $hiddenusers{$_} = 1; } split(/,/,$syllabus->{'personnel'}{'hideuser'}); |
|
} |
|
} |
|
} |
my $output; |
my $output; |
my %coursepersonnel=&Apache::lonnet::get_course_adv_roles($cdom.'/'.$cnum); |
my %coursepersonnel=&Apache::lonnet::get_course_adv_roles($cdom.'/'.$cnum,1); |
if ($target ne 'tex') { |
if ($target ne 'tex') { |
$r->print(&Apache::lonhtmlcommon::start_pick_box()); |
if ($allowed) { |
|
$r->print(&Apache::loncommon::start_data_table(). |
|
&Apache::loncommon::start_data_table_header_row(). |
|
'<th>'.&mt('Role hidden?').'</th><th>'.&mt('Role').'</th>'. |
|
'<th>'.&mt('Personnel (hidden if checked)').'</th>'. |
|
&Apache::loncommon::end_data_table_header_row()); |
|
} else { |
|
$r->print(&Apache::lonhtmlcommon::start_pick_box()); |
|
} |
} else { |
} else { |
$r->print('\begin{tabular}{|p{0.45\textwidth}|p{0.45\textwidth}|}\hline'); |
$r->print('\begin{tabular}{|p{0.45\textwidth}|p{0.45\textwidth}|}\hline'); |
} |
} |
my @personnel=sort(keys(%coursepersonnel)); |
my @personnel=sort(keys(%coursepersonnel)); |
my $lastpers=$personnel[$#personnel]; |
my $lastpers=$personnel[$#personnel]; |
foreach my $element (@personnel) { |
foreach my $element (@personnel) { |
|
unless ($allowed) { |
|
next if ($hiddenroles{$element}) |
|
} |
|
my ($role,$sec); |
|
if ($element =~ /:/) { |
|
($role,$sec) = split(/:/,$element); |
|
} else { |
|
$role = $element; |
|
} |
|
my $roletext = &Apache::lonnet::plaintext($role,$crstype); |
|
if ($sec) { |
|
$roletext .=' ('.&Apache::lonlocal::mt('Section [_1]',$sec).')'; |
|
} |
if ($target ne 'tex') { |
if ($target ne 'tex') { |
$r->print(&Apache::lonhtmlcommon::row_title($element)); |
if ($allowed) { |
|
my $checked; |
|
if ($hiddenroles{$element}) { |
|
$checked = ' checked="checked"'; |
|
} |
|
$r->print(&Apache::loncommon::start_data_table_row(). |
|
'<td>'. |
|
'<input type="checkbox" name="hiderole" value="'.$element.'" '. |
|
$checked.' />'. |
|
'</td><td>'.$roletext.'</td><td>'); |
|
} else { |
|
$r->print(&Apache::lonhtmlcommon::row_title($roletext)); |
|
} |
} else { |
} else { |
$r->print(' '.&Apache::lonxml::xmlparse($r,'tex',$element).' & '); |
$r->print(' '.&Apache::lonxml::xmlparse($r,'tex',$roletext).' & '); |
} |
} |
my @coursepersonlist; |
my @coursepersonlist; |
foreach my $user (split(/\,/,$coursepersonnel{$element})) { |
foreach my $user (split(/\,/,$coursepersonnel{$element})) { |
my ($puname,$pudom)=split(/\:/,$user); |
my ($puname,$pudom)=split(/\:/,$user); |
if ($target ne 'tex') { |
if ($target ne 'tex') { |
my $courseperson = &Apache::loncommon::plainname($puname,$pudom); |
my $courseperson = &Apache::loncommon::plainname($puname,$pudom); |
if (($env{'user.name'} eq '') || ($env{'user.name'} eq 'public') || |
my $checked; |
($env{'user.domain'} eq '') || ($env{'user.domain'} eq 'public')) { |
if ($hiddenusers{$element.'&'.$puname.':'.$pudom}) { |
push(@coursepersonlist,$courseperson); |
$checked = ' checked="checked"'; |
|
} |
|
if ($allowed) { |
|
my $item = '<span class="LC_nobreak"><label>'. |
|
'<input type="checkbox" name="hideuser" value="'.$element.'&'.$puname.':'.$pudom.'"'.$checked.' />'. |
|
&Apache::loncommon::aboutmewrapper($courseperson |
|
, |
|
$puname,$pudom). |
|
'</label>'.(' 'x2).'</span> '; |
|
push(@coursepersonlist,$item); |
|
|
} else { |
} else { |
push(@coursepersonlist,&Apache::loncommon::aboutmewrapper($courseperson, |
next if ($hiddenusers{$element.'&'.$puname.':'.$pudom}); |
$puname,$pudom)); |
if (($env{'user.name'} eq '') || ($env{'user.name'} eq 'public') || |
|
($env{'user.domain'} eq '') || ($env{'user.domain'} eq 'public')) { |
|
push(@coursepersonlist,$courseperson); |
|
} else { |
|
push(@coursepersonlist,&Apache::loncommon::aboutmewrapper($courseperson, |
|
$puname,$pudom)); |
|
} |
} |
} |
} else { |
} else { |
push(@coursepersonlist,&Apache::loncommon::plainname($puname, |
push(@coursepersonlist,&Apache::loncommon::plainname($puname, |
$pudom).' '); |
$pudom).' '); |
} |
} |
} |
} |
$r->print(join(", ",@coursepersonlist)); |
if ($allowed) { |
|
$r->print(join('',@coursepersonlist)); |
|
} else { |
|
$r->print(join(', ',@coursepersonlist)); |
|
} |
if ($target ne 'tex') { |
if ($target ne 'tex') { |
my $lastclose=$element eq $lastpers?1:0; |
if ($allowed) { |
$r->print(&Apache::lonhtmlcommon::row_closure($lastclose)); |
$r->print('</td>'.&Apache::loncommon::end_data_table_row()); |
|
} else { |
|
my $lastclose=$element eq $lastpers?1:0; |
|
$r->print(&Apache::lonhtmlcommon::row_closure($lastclose)); |
|
} |
} else { |
} else { |
$r->print('\\\\ \hline'); |
$r->print('\\\\ \hline'); |
} |
} |
} |
} |
if ($target ne 'tex') { |
if ($target ne 'tex') { |
$r->print(&Apache::lonhtmlcommon::end_pick_box()); |
if ($allowed) { |
|
$r->print(&Apache::loncommon::end_data_table()); |
|
} else { |
|
$r->print(&Apache::lonhtmlcommon::end_pick_box()); |
|
} |
} else { |
} else { |
$r->print('\end{tabular}\\\\'); |
$r->print('\end{tabular}\\\\'); |
} |
} |
Line 992 sub get_personnel {
|
Line 1081 sub get_personnel {
|
sub save_changes { |
sub save_changes { |
my ($cnum,$cdom,$uploaded,$external,$minimal,$syllabus,$syllabusfields,$courseenv) = @_; |
my ($cnum,$cdom,$uploaded,$external,$minimal,$syllabus,$syllabusfields,$courseenv) = @_; |
my ($earlyout,$output); |
my ($earlyout,$output); |
unless ((ref($syllabus) eq 'HASH') && (ref($syllabusfields) eq 'HASH')) { |
unless ((ref($syllabus) eq 'HASH') && (ref($syllabusfields) eq 'HASH') || |
|
(ref($courseenv) eq 'HASH')) { |
return ($earlyout,$uploaded,$external,$minimal,$output); |
return ($earlyout,$uploaded,$external,$minimal,$output); |
} |
} |
if ($env{'form.deleteuploaded'}) { |
if (($env{'form.deleteuploaded_file'}) || ($env{'form.deleteuploaded_minimal'})) { |
my %storehash; |
my %storehash; |
if (($env{'form.choice'} eq 'file') && |
if (($env{'form.choice'} eq 'file') && |
($env{'form.deleteuploaded'} eq 'file') && ($uploaded =~ /\w/)) { |
($env{'form.deleteuploaded_file'}) && ($uploaded =~ /\w/)) { |
|
if ($courseenv->{'uploadedsyllabus'} =~ m{^\Q/uploaded/$cdom/$cnum/portfolio\E(/syllabus/.+)$}) { |
|
my $filename = $1; |
|
&update_access_permissions($cdom,$cnum,$filename); |
|
} |
&Apache::lonnet::delenv('course.'.$env{'request.course.id'}.'.uploadedsyllabus'); |
&Apache::lonnet::delenv('course.'.$env{'request.course.id'}.'.uploadedsyllabus'); |
&Apache::lonnet::delenv('course.'.$env{'request.course.id'}.'.externalsyllabus'); |
&Apache::lonnet::delenv('course.'.$env{'request.course.id'}.'.externalsyllabus'); |
$storehash{'uploadedsyllabus'} = ''; |
$storehash{'uploadedsyllabus'} = ''; |
Line 1007 sub save_changes {
|
Line 1101 sub save_changes {
|
undef($uploaded); |
undef($uploaded); |
undef($external); |
undef($external); |
} elsif (($env{'form.choice'} eq 'minimal') && |
} elsif (($env{'form.choice'} eq 'minimal') && |
($env{'form.deleteuploaded'} eq 'minimal') && ($minimal =~ /\w/)) { |
($env{'form.deleteuploaded_minimal'}) && ($minimal =~ /\w/)) { |
|
my $minimalurl = "/uploaded/$cdom/$cnum/portfolio/syllabus/loncapa.html"; |
|
if ($courseenv->{'minimalsyllabus'} eq "$minimalurl") { |
|
my $filecontents=&Apache::lonnet::getfile(&Apache::lonnet::filelocation("",$minimalurl)); |
|
unless ($filecontents eq -1) { |
|
$env{'form.output'} = $filecontents; |
|
&Apache::lonnet::finishuserfileupload($cnum,$cdom,'output', |
|
'portfolio/syllabus/loncapa.html.bak'); |
|
$minimalurl = &default_minimal_syllabus($cnum,$cdom); |
|
} |
|
} |
|
&update_access_permissions($cdom,$cnum,'/syllabus/loncapa.html'); |
&Apache::lonnet::delenv('course.'.$env{'request.course.id'}.'.externalsyllabus'); |
&Apache::lonnet::delenv('course.'.$env{'request.course.id'}.'.externalsyllabus'); |
&Apache::lonnet::delenv('course.'.$env{'request.course.id'}.'.minimalsyllabus'); |
&Apache::lonnet::delenv('course.'.$env{'request.course.id'}.'.minimalsyllabus'); |
$storehash{'externalsyllabus'} = ''; |
$storehash{'externalsyllabus'} = ''; |
Line 1030 sub save_changes {
|
Line 1135 sub save_changes {
|
my ($prefix) = split(/_/,$field); |
my ($prefix) = split(/_/,$field); |
$syllabus->{'uploaded.fields'} .= $prefix.','; |
$syllabus->{'uploaded.fields'} .= $prefix.','; |
} |
} |
|
if ($field eq '000_showpeople') { |
|
my @hideusers = &Apache::loncommon::get_env_multiple('form.hideuser'); |
|
my @hideroles = &Apache::loncommon::get_env_multiple('form.hiderole'); |
|
my %coursepersonnel=&Apache::lonnet::get_course_adv_roles($cdom.'/'.$cnum,1); |
|
my %personnel; |
|
foreach my $key (keys(%coursepersonnel)) { |
|
map { $personnel{$key}{$_} = 1; } split(/,/,$coursepersonnel{$key}); |
|
} |
|
%{$syllabus->{'personnel'}} = (); |
|
$syllabus->{'personnel'}{'hideuser'} = ''; |
|
$syllabus->{'personnel'}{'hiderole'} = ''; |
|
foreach my $role (@hideroles) { |
|
if (exists($personnel{$role})) { |
|
$syllabus->{'personnel'}{'hiderole'} .= $role.','; |
|
} |
|
} |
|
foreach my $item (@hideusers) { |
|
my ($role,$user) = split(/\&/,$item); |
|
if (ref($personnel{$role}) eq 'HASH') { |
|
if ($personnel{$role}{$user}) { |
|
$syllabus->{'personnel'}{'hideuser'} .= $item.','; |
|
} |
|
} |
|
} |
|
$syllabus->{'personnel'}{'hideuser'} =~ s/,$//; |
|
$syllabus->{'personnel'}{'hiderole'} =~ s/,$//; |
|
} |
} |
} |
$syllabus->{'uploaded.fields'} =~ s/,$//; |
$syllabus->{'uploaded.fields'} =~ s/,$//; |
} |
} |
Line 1139 sub save_changes {
|
Line 1271 sub save_changes {
|
'</div>'; |
'</div>'; |
} |
} |
} elsif ($env{'form.choice'} eq 'minimal') { |
} elsif ($env{'form.choice'} eq 'minimal') { |
my $title = $env{'form.syllabustitle'}; |
$url = "/uploaded/$cdom/$cnum/portfolio/syllabus/loncapa.html"; |
$title =~ s{`}{}g; |
my $filecontents=&Apache::lonnet::getfile(&Apache::lonnet::filelocation("",$url)); |
$title=~s/^\s+//; |
if ($filecontents eq -1) { |
$title=~s/\s+$//; |
$url = &default_minimal_syllabus($cnum,$cdom); |
if ($title eq '') { |
|
$title = &mt('Syllabus'); |
|
} |
} |
my $initialtext = &mt('Replace with your own content.'); |
|
my $newhtml = <<END; |
|
<html> |
|
<head> |
|
<title>$title</title> |
|
</head> |
|
<body bgcolor="#ffffff"> |
|
<h2>$title</h2> |
|
$initialtext |
|
</body> |
|
</html> |
|
END |
|
$env{'form.output'}=$newhtml; |
|
$url = |
|
&Apache::lonnet::finishuserfileupload($cnum,$cdom,'output', |
|
'portfolio/syllabus/loncapa.html'); |
|
} |
} |
if ($url =~ m{^/uploaded/\Q$cdom\E/\Q$cnum\E.*/[^/]+$}) { |
if ($url =~ m{^/uploaded/\Q$cdom\E/\Q$cnum\E.*/[^/]+$}) { |
my $exturl = &home_http_host($cdom,$cnum); |
my $exturl = &home_http_host($cdom,$cnum); |
Line 1250 END
|
Line 1364 END
|
return ($earlyout,$uploaded,$external,$minimal,$output); |
return ($earlyout,$uploaded,$external,$minimal,$output); |
} |
} |
|
|
|
sub default_minimal_syllabus { |
|
my ($cnum,$cdom) = @_; |
|
my $title; |
|
if ($env{'form.syllabustitle'}) { |
|
$title = $env{'form.syllabustitle'}; |
|
$title =~ s{`}{}g; |
|
$title=~s/^\s+//; |
|
$title=~s/\s+$//; |
|
} |
|
if ($title eq '') { |
|
$title = &mt('Syllabus'); |
|
} |
|
my $initialtext = &mt('Replace with your own content.'); |
|
my $newhtml = <<END; |
|
<html> |
|
<head> |
|
<title>$title</title> |
|
</head> |
|
<body bgcolor="#ffffff"> |
|
<h2>$title</h2> |
|
$initialtext |
|
</body> |
|
</html> |
|
END |
|
$env{'form.output'}=$newhtml; |
|
return &Apache::lonnet::finishuserfileupload($cnum,$cdom,'output', |
|
'portfolio/syllabus/loncapa.html'); |
|
} |
|
|
sub update_syllabus_env { |
sub update_syllabus_env { |
my ($cdom,$cnum,$courseenv,$saved,$uploaded,$minimal,$external) = @_; |
my ($cdom,$cnum,$courseenv,$saved,$uploaded,$minimal,$external) = @_; |
return ($uploaded,$minimal,$external) unless(ref($courseenv) eq 'HASH'); |
return ($uploaded,$minimal,$external) unless(ref($courseenv) eq 'HASH'); |
my $now = time; |
my $now = time; |
my (@envkeys,%storehash); |
my (@envkeys,%storehash); |
if ($saved eq 'template') { |
if ($saved eq 'template') { |
if ($uploaded) { |
if ($uploaded || $env{'course.'.$env{'request.course.id'}.'.uploadedsyllabus'}) { |
push(@envkeys,'uploaded'); |
push(@envkeys,'uploaded'); |
} |
} |
if ($minimal) { |
if ($minimal || $env{'course.'.$env{'request.course.id'}.'.minimalsyllabus'}) { |
push(@envkeys,'minimal'); |
push(@envkeys,'minimal'); |
} |
} |
if ($external) { |
if ($external || $env{'course.'.$env{'request.course.id'}.'.externalsyllabus'}) { |
push(@envkeys,'external'); |
push(@envkeys,'external'); |
} |
} |
$storehash{'updatedsyllabus'} = $now; |
$storehash{'updatedsyllabus'} = $now; |
&Apache::lonnet::appenv({'course.'.$env{'request.course.id'}.'.updatedsyllabus' => $now |
&Apache::lonnet::appenv({'course.'.$env{'request.course.id'}.'.updatedsyllabus' => $now |
}); |
}); |
|
|
} elsif ($saved eq 'url') { |
} elsif ($saved eq 'url') { |
my $prefix = &home_http_host($cdom,$cnum); |
my $prefix = &home_http_host($cdom,$cnum); |
if ($external =~ m{^\Q$prefix/uploaded/$cdom/$cnum/portfolio/syllabus/\E(.+)$}) { |
if ($external =~ m{^\Q$prefix/uploaded/$cdom/$cnum/portfolio/syllabus/\E(.+)$}) { |
my $file = $1; |
my $file = $1; |
if ($file eq 'loncapa.html') { |
if ($file eq 'loncapa.html') { |
if ($uploaded) { |
if ($uploaded || $env{'course.'.$env{'request.course.id'}.'.uploadedsyllabus'}) { |
push(@envkeys,'uploaded'); |
push(@envkeys,'uploaded'); |
} |
} |
} elsif ($minimal) { |
} elsif ($minimal || $env{'course.'.$env{'request.course.id'}.'.minimalsyllabus'}) { |
push(@envkeys,'minimal'); |
push(@envkeys,'minimal'); |
} |
} |
} else { |
} else { |
if ($uploaded) { |
if ($uploaded || $env{'course.'.$env{'request.course.id'}.'.uploadedsyllabus'}) { |
push(@envkeys,'uploaded'); |
push(@envkeys,'uploaded'); |
} |
} |
if ($minimal) { |
if ($minimal || $env{'course.'.$env{'request.course.id'}.'.minimalsyllabus'}) { |
push(@envkeys,'minimal'); |
push(@envkeys,'minimal'); |
} |
} |
} |
} |
} elsif ($saved eq 'file') { |
} elsif ($saved eq 'file') { |
if ($minimal) { |
if ($minimal || $env{'course.'.$env{'request.course.id'}.'.minimalsyllabus'}) { |
push(@envkeys,'minimal'); |
push(@envkeys,'minimal'); |
} |
} |
} elsif ($saved eq 'minimal') { |
} elsif ($saved eq 'minimal') { |
if ($uploaded) { |
if ($uploaded || $env{'course.'.$env{'request.course.id'}.'.uploadedsyllabus'}) { |
push(@envkeys,'uploaded'); |
push(@envkeys,'uploaded'); |
} |
} |
} |
} |
if (@envkeys > 0) { |
if (@envkeys > 0) { |
foreach my $item (@envkeys) { |
foreach my $item (@envkeys) { |
my $key = $item.'syllabus'; |
my $key = $item.'syllabus'; |
if ($courseenv->{$key}) { |
if ($courseenv->{$key} ne '') { |
&Apache::lonnet::delenv('course.'.$env{'request.course.id'}.'.'.$key); |
&Apache::lonnet::delenv('course.'.$env{'request.course.id'}.'.'.$key); |
|
if ($item eq 'minimal') { |
|
&update_access_permissions($cdom,$cnum,'/syllabus/loncapa.html'); |
|
} elsif ($item eq 'uploaded') { |
|
if ($courseenv->{$key} =~ m{^\Q/uploaded/$cdom/$cnum/portfolio\E(/syllabus/.+)$}) { |
|
my $filename = $1; |
|
&update_access_permissions($cdom,$cnum,$filename); |
|
} |
|
} |
$storehash{$key} = ''; |
$storehash{$key} = ''; |
|
} elsif ($env{'course.'.$env{'request.course.id'}.'.'.$key} ne '') { |
|
&Apache::lonnet::delenv('course.'.$env{'request.course.id'}.'.'.$key); |
} |
} |
if ($item eq 'uploaded') { |
if ($item eq 'uploaded') { |
undef($uploaded); |
undef($uploaded); |
Line 1321 sub update_syllabus_env {
|
Line 1473 sub update_syllabus_env {
|
return ($uploaded,$minimal,$external); |
return ($uploaded,$minimal,$external); |
} |
} |
|
|
|
sub update_access_permissions { |
|
my ($cdom,$cnum,$file_name) = @_; |
|
my $current_permissions = &Apache::lonnet::get_portfile_permissions($cdom,$cnum); |
|
my %access_controls = |
|
&Apache::lonnet::get_access_controls($current_permissions,'',$file_name); |
|
if (keys(%access_controls) > 0) { |
|
my %changes; |
|
foreach my $key (keys(%{$access_controls{$file_name}})) { |
|
$changes{'delete'}{$key} = 1; |
|
} |
|
if (keys(%changes) > 0) { |
|
my ($outcome,$deloutcome,$new_values,$translation) = |
|
&Apache::lonnet::modify_access_controls($file_name,\%changes, |
|
$cdom,$cnum); |
|
} |
|
} |
|
return; |
|
} |
|
|
sub home_http_host { |
sub home_http_host { |
my ($cdom,$cnum) = @_; |
my ($cdom,$cnum) = @_; |
my $home=&Apache::lonnet::homeserver($cnum,$cdom); |
my $home=&Apache::lonnet::homeserver($cnum,$cdom); |
Line 1428 sub editfile_button {
|
Line 1599 sub editfile_button {
|
} |
} |
$output .= ' |
$output .= ' |
<input type="button" value="'.$deltext.'" onclick="javascript:dodelete('."'$context'".');" name="del_'.$context.'" /> |
<input type="button" value="'.$deltext.'" onclick="javascript:dodelete('."'$context'".');" name="del_'.$context.'" /> |
<input type="hidden" value="" name="deleteuploaded" /> |
<input type="hidden" value="" name="deleteuploaded_'.$context.'" id="deleteuploaded_'.$context.'" /> |
'; |
'; |
return $output; |
return $output; |
} |
} |
Line 1446 sub editbutton_js {
|
Line 1617 sub editbutton_js {
|
document.location.href = url+'?editmode=1&forceedit=1'; |
document.location.href = url+'?editmode=1&forceedit=1'; |
} |
} |
function dodelete(caller,url) { |
function dodelete(caller,url) { |
document.syllabus.deleteuploaded.value=caller; |
if (document.getElementById('deleteuploaded_'+caller)) { |
if (caller == 'minimal') { |
document.getElementById('deleteuploaded_'+caller).value=1; |
if (confirm("$lt{'min'}"+"\\n"+"$lt{'noundo'}")) { |
if (caller == 'minimal') { |
document.syllabus.submit(); |
if (confirm("$lt{'min'}"+"\\n"+"$lt{'noundo'}")) { |
|
document.syllabus.submit(); |
|
} |
} |
} |
} |
if (caller == 'file') { |
if (caller == 'file') { |
if (confirm("$lt{'file'}"+"\\n"+"$lt{'noundo'}")) { |
if (confirm("$lt{'file'}"+"\\n"+"$lt{'noundo'}")) { |
document.syllabus.submit(); |
document.syllabus.submit(); |
} |
} |
} |
} |
} |
return; |
return; |