version 1.121, 2013/05/09 05:43:30
|
version 1.124, 2013/05/15 17:31:52
|
Line 100 sub handler {
|
Line 100 sub handler {
|
# -------------------------------------------------- Let's see who handles this |
# -------------------------------------------------- Let's see who handles this |
my $external=$courseenv{'externalsyllabus'}; |
my $external=$courseenv{'externalsyllabus'}; |
my $uploaded=$courseenv{'uploadedsyllabus'}; |
my $uploaded=$courseenv{'uploadedsyllabus'}; |
|
my $minimal=$courseenv{'minimalsyllabus'}; |
|
|
if ($uploaded =~/\w/) { |
if (($minimal =~/\w/) || ($uploaded =~/\w/)) { |
if ($external =~ m{\Q$uploaded\E$}) { |
my $item; |
undef($external); |
if ($minimal =~/\w/) { |
|
if ($external =~ m{\Q$minimal\E$}) { |
|
undef($external); |
|
} |
|
$item = $minimal; |
|
} elsif ($uploaded =~/\w/) { |
|
if ($external =~ m{\Q$uploaded\E$}) { |
|
undef($external); |
|
} |
|
$item = $uploaded; |
} |
} |
unless ($allowed && $forceedit) { |
unless ($allowed && $forceedit) { |
my $file=&Apache::lonnet::filelocation("",$uploaded); |
my $file=&Apache::lonnet::filelocation("",$item); |
if ($file =~ /\.(sty|css|js|txt|tex|html?)$/) { |
if ($file =~ /\.(sty|css|js|txt|tex|html?)$/) { |
my $filetype; |
my $filetype; |
if ($file =~ /\.(sty|css|js|txt|tex)$/) { |
if ($file =~ /\.(sty|css|js|txt|tex)$/) { |
Line 122 sub handler {
|
Line 132 sub handler {
|
my %mystyle; |
my %mystyle; |
&Apache::structuretags::reset_problem_globals(); |
&Apache::structuretags::reset_problem_globals(); |
my $oldfile = $env{'request.filename'}; |
my $oldfile = $env{'request.filename'}; |
$env{'request.filename'} = $uploaded; |
$env{'request.filename'} = $item; |
$result = &Apache::lonxml::xmlparse($r,'web',$filecontents, |
$result = &Apache::lonxml::xmlparse($r,'web',$filecontents, |
'',%mystyle); |
'',%mystyle); |
&Apache::structuretags::reset_problem_globals(); |
&Apache::structuretags::reset_problem_globals(); |
Line 132 sub handler {
|
Line 142 sub handler {
|
$r->print($result); |
$r->print($result); |
} |
} |
} else { |
} else { |
$r->print(&Apache::lonwrapper::wrapper($uploaded)); |
$r->print(&Apache::lonwrapper::wrapper($item)); |
} |
} |
return OK; |
return OK; |
} |
} |
Line 170 sub handler {
|
Line 180 sub handler {
|
# This handler might be called anonymously ... |
# This handler might be called anonymously ... |
# ----------------------------------------------------- Only if not public call |
# ----------------------------------------------------- Only if not public call |
if ($allowed) { |
if ($allowed) { |
if (($env{'form.choice'} =~ /^(template|url|file)$/) || |
if (($env{'form.choice'} =~ /^(template|minimal|url|file)$/) || |
($env{'form.phase'} =~ /^(upload|check)_embedded$/)) { |
($env{'form.phase'} =~ /^(upload|check)_embedded$/)) { |
my $earlyout; |
my $earlyout; |
($earlyout,$uploaded,$external,$output) = |
($earlyout,$uploaded,$external,$minimal,$output) = |
&save_changes($cnum,$cdom,$uploaded,$external,\%syllabus, |
&save_changes($cnum,$cdom,$uploaded,$external,$minimal, |
\%syllabusfields,\%courseenv); |
\%syllabus,\%syllabusfields,\%courseenv); |
|
if (($env{'form.choice'} eq 'minimal') && |
|
($minimal eq "/uploaded/$cdom/$cnum/portfolio/syllabus/loncapa.html")) { |
|
delete($env{'form.symb'}); |
|
delete($env{'request.symb'}); |
|
$r->internal_redirect("$minimal?editmode=1&forceedit=1"); |
|
return OK; |
|
} |
if ($earlyout) { |
if ($earlyout) { |
if ($target ne 'tex') { |
if ($target ne 'tex') { |
&print_header($r,$cnum,$cdom,$crstype,$allowed,$forceedit, |
&print_header($r,$cnum,$cdom,$crstype,$allowed,$forceedit, |
\%syllabus,\%syllabusfields); |
\%syllabus,\%syllabusfields); |
$r->print($output); |
$r->print($output. |
|
&Apache::loncommon::end_page()); |
} |
} |
return OK; |
return OK; |
} |
} |
Line 237 sub handler {
|
Line 255 sub handler {
|
.'</span>' |
.'</span>' |
.'</div><div style="padding:0;clear:both;margin:0;border:0"></div>'."\n"); |
.'</div><div style="padding:0;clear:both;margin:0;border:0"></div>'."\n"); |
my $lonhost = $r->dir_config('lonHostID'); |
my $lonhost = $r->dir_config('lonHostID'); |
$r->print(&chooser($external,$uploaded,$cdom,$cnum,$lonhost,\%syllabusfields, |
$r->print(&chooser($external,$uploaded,$minimal,$cdom,$cnum,$lonhost, |
\%syllabus)); |
\%syllabusfields,\%syllabus)); |
} |
} |
} else { |
} else { |
#--------------------------------------------- Print last update unless editing |
#--------------------------------------------- Print last update unless editing |
Line 277 sub handler {
|
Line 295 sub handler {
|
#-------------------------------------------------------------- Print Headtitle |
#-------------------------------------------------------------- Print Headtitle |
if ($target ne 'tex') { |
if ($target ne 'tex') { |
my $display = 'block'; |
my $display = 'block'; |
if ($external || $uploaded) { |
if ($external || $uploaded || $minimal) { |
$display = 'none'; |
$display = 'none'; |
} |
} |
$r->print('<div class="LC_Box" id="template" style="display: '.$display.'">'. |
$r->print('<div class="LC_Box" id="template" style="display: '.$display.'">'. |
Line 536 ENDREGEXP
|
Line 554 ENDREGEXP
|
// <![CDATA[ |
// <![CDATA[ |
|
|
function toggleEditor(pick) { |
function toggleEditor(pick) { |
var choices = new Array('template','url','file','templatebox'); |
var choices = new Array('template','minimal','url','file','templatebox'); |
for (var i=0; i<choices.length; i++) { |
for (var i=0; i<choices.length; i++) { |
if (((choices[i] == 'templatebox') && (pick == 'template')) || |
if (((choices[i] == 'templatebox') && (pick == 'template')) || |
(choices[i] == pick)) { |
(choices[i] == pick)) { |
Line 675 ENDSCRIPT
|
Line 693 ENDSCRIPT
|
} |
} |
my $start_page = |
my $start_page = |
&Apache::loncommon::start_page("Syllabus", $rss_link.$js,$args); |
&Apache::loncommon::start_page("Syllabus", $rss_link.$js,$args); |
$r->print($start_page); |
if ($start_page) { |
|
$r->print($start_page); |
|
} |
} |
} |
|
|
sub chooser { |
sub chooser { |
my ($external,$uploaded,$cdom,$cnum,$lonhost,$fields,$values) = @_; |
my ($external,$uploaded,$minimal,$cdom,$cnum,$lonhost,$fields,$values) = @_; |
my %lt = &Apache::lonlocal::texthash( |
my %lt = &Apache::lonlocal::texthash( |
'type' => 'Syllabus Type', |
'type' => 'Syllabus Type', |
'url' => 'External URL', |
'url' => 'External URL', |
'file' => 'Uploaded File', |
'file' => 'Uploaded file', |
'template' => 'Syllabus Template', |
'minimal' => 'Minimal template', |
|
'template' => 'Standard template', |
'templateboxes' => 'Choose template items ... ', |
'templateboxes' => 'Choose template items ... ', |
'curr' => 'Current:', |
'curr' => 'Current:', |
'rep' => 'Replace:', |
'rep' => 'Replace:', |
'upl' => 'Upload:', |
'upl' => 'Upload:', |
'pr' => 'Preview', |
'pr' => 'Preview', |
'save' => 'Save', |
'save' => 'Save', |
'chourl' => 'Choose external URL', |
'sved' => 'Save and Edit', |
|
'chourl' => 'External URL', |
'chofile' => 'Uploaded syllabus file', |
'chofile' => 'Uploaded syllabus file', |
'parse' => 'Upload embedded images/multimedia files if HTML file', |
'parse' => 'Upload embedded images/multimedia files if HTML file', |
); |
); |
my %checked = ( |
my %checked = ( |
file => '', |
file => '', |
|
minimal => '', |
url => '', |
url => '', |
template => '', |
template => '', |
); |
); |
my %display = ( |
my %display = ( |
file => 'none', |
file => 'none', |
|
minimal => 'none', |
url => 'none', |
url => 'none', |
templatebox => 'none', |
templatebox => 'none', |
); |
); |
Line 712 sub chooser {
|
Line 736 sub chooser {
|
} elsif ($external) { |
} elsif ($external) { |
$checked{'url'} = $check; |
$checked{'url'} = $check; |
$display{'url'} = 'block'; |
$display{'url'} = 'block'; |
|
} elsif ($minimal) { |
|
$checked{'minimal'} = $check; |
|
$display{'minimal'} = 'block'; |
} else { |
} else { |
$checked{'template'} = $check; |
$checked{'template'} = $check; |
$checked{'templatebox'} = $check; |
$checked{'templatebox'} = $check; |
Line 722 sub chooser {
|
Line 749 sub chooser {
|
'<form name="syllabus" method="post" enctype="multipart/form-data" action="">'."\n". |
'<form name="syllabus" method="post" enctype="multipart/form-data" action="">'."\n". |
'<input type="hidden" name="forceedit" value="1" />'."\n". |
'<input type="hidden" name="forceedit" value="1" />'."\n". |
'<div class="LC_left_float"><fieldset><legend>'.$lt{'type'}.'</legend>'; |
'<div class="LC_left_float"><fieldset><legend>'.$lt{'type'}.'</legend>'; |
foreach my $item ('template','url','file') { |
foreach my $item ('minimal','template','url','file') { |
$output .= '<label><input type="radio" name="choice" value="'.$item.'" '.$checked{$item}.' onclick="toggleEditor('."'$item'".')" />'. |
$output .= '<label><input type="radio" name="choice" value="'.$item.'" '.$checked{$item}.' onclick="toggleEditor('."'$item'".')" />'. |
$lt{$item}.'</label><br />'; |
$lt{$item}.'</label><br />'; |
} |
} |
Line 733 sub chooser {
|
Line 760 sub chooser {
|
'<input type="text" id="syllabusurl" name="externalsyllabus" value="'.$external.'" size="55" />'."\n". |
'<input type="text" id="syllabusurl" name="externalsyllabus" value="'.$external.'" size="55" />'."\n". |
' <input type="submit" name="storeurl" value="'.$lt{'save'}.'" />'."\n". |
' <input type="submit" name="storeurl" value="'.$lt{'save'}.'" />'."\n". |
'</fieldset></div>'."\n". |
'</fieldset></div>'."\n". |
'<div id="file" class="LC_left_float" style="display: '.$display{'file'}.'"><fieldset><legend>'.$lt{'file'}.'</legend>'; |
'<div id="minimal" class="LC_left_float" style="display: '.$display{'minimal'}.'">'."\n". |
|
'<fieldset><legend>'.$lt{'minimal'}.'</legend>'; |
|
if ($minimal) { |
|
my ($absurl,$filename,$depbutton) = &syllabus_file_info($minimal,$cnum,$cdom,$lonhost,'minimal'); |
|
$output .= '<a href="javascript:extUrlPreview('."'currminimal'".');">'.$lt{'pr'}.'</a>'. |
|
'<input type="hidden" name="minimalfile" value="'.&HTML::Entities::encode($absurl).'?inhibitmenu=yes" id="currminimal" />'. |
|
$depbutton; |
|
} else { |
|
$output .= &mt('Title of Syllabus Page:').' '. |
|
'<input type="text" id="minimaltitle" name="syllabustitle" value="'.&mt('Syllabus').'" size="30" />'."\n". |
|
' <input type="submit" name="storeminimal" value="'.$lt{'sved'}.'" />'."\n"; |
|
} |
|
$output .= '</fieldset></div>'."\n". |
|
'<div id="file" class="LC_left_float" style="display: '.$display{'file'}.'">'."\n". |
|
'<fieldset><legend>'.$lt{'file'}.'</legend>'; |
if ($uploaded) { |
if ($uploaded) { |
my $protocol = $Apache::lonnet::protocol{$lonhost}; |
my ($absurl,$filename,$depbutton) = &syllabus_file_info($uploaded,$cnum,$cdom,$lonhost,'file'); |
$protocol = 'http' if ($protocol ne 'https'); |
|
my $absurl = $protocol.'://'.&Apache::lonnet::hostname($lonhost).$uploaded; |
|
my ($filename) = ($uploaded =~ m{([^/]+)$}); |
|
my $file=&Apache::lonnet::filelocation("",$uploaded); |
|
my $depbutton; |
|
if ($file =~ /\.html?$/) { |
|
my $filecontents=&Apache::lonnet::getfile($file); |
|
unless ($filecontents eq -1) { |
|
my $mm = new File::MMagic; |
|
my $mimetype = $mm->checktype_contents($filecontents); |
|
if ($mimetype eq 'text/html') { |
|
my (%codebase,%allfiles); |
|
my $parse_result = &Apache::lonnet::extract_embedded_items($uploaded,\%allfiles, |
|
\%codebase,\$filecontents); |
|
my $actionurl = "/public/$cdom/$cnum/syllabus"; |
|
my ($ignore,$num,$numpathchanges,$existing,$mapping) = |
|
&Apache::loncommon::ask_for_embedded_content($actionurl,undef,\%allfiles, |
|
\%codebase, |
|
{'context' => 'rewrites', |
|
'ignore_remote_references' => 1,}); |
|
if (keys(%allfiles)) { |
|
$depbutton = (' ' x 3). |
|
&editfile_button(). |
|
&editbutton_js($uploaded); |
|
} |
|
} |
|
} |
|
} |
|
|
|
$output .= '<span class="LC_nobreak">'.$lt{'curr'}.' '. |
$output .= '<span class="LC_nobreak">'.$lt{'curr'}.' '. |
'<input type="hidden" name="uploadedfile" value="'.&HTML::Entities::encode($absurl).'?inhibitmenu=yes" id="currfile" />'. |
'<input type="hidden" name="uploadedfile" value="'.&HTML::Entities::encode($absurl).'?inhibitmenu=yes" id="currfile" />'. |
'<a href="javascript:extUrlPreview('."'currfile'".');">'.$filename.'</a></span>'.$depbutton. |
'<a href="javascript:extUrlPreview('."'currfile'".');">'.$filename.'</a></span>'.$depbutton. |
Line 772 sub chooser {
|
Line 784 sub chooser {
|
} else { |
} else { |
$output .= $lt{'upl'}; |
$output .= $lt{'upl'}; |
} |
} |
|
|
$output .= '<br />'."\n". |
$output .= '<br />'."\n". |
'<span class="LC_nobreak">'. |
'<span class="LC_nobreak">'. |
'<input type="file" name="syllabusfile" size="55" />'."\n". |
'<input type="file" name="syllabusfile" size="55" />'."\n". |
Line 799 sub chooser {
|
Line 810 sub chooser {
|
return $output; |
return $output; |
} |
} |
|
|
|
sub syllabus_file_info { |
|
my ($item,$cnum,$cdom,$lonhost,$context) = @_; |
|
my $protocol = $Apache::lonnet::protocol{$lonhost}; |
|
$protocol = 'http' if ($protocol ne 'https'); |
|
my $absurl = $protocol.'://'.&Apache::lonnet::hostname($lonhost).$item; |
|
my ($filename) = ($item =~ m{([^/]+)$}); |
|
my $file=&Apache::lonnet::filelocation("",$item); |
|
my $depbutton; |
|
if ($file =~ /\.html?$/) { |
|
my $filecontents=&Apache::lonnet::getfile($file); |
|
unless ($filecontents eq -1) { |
|
my $mm = new File::MMagic; |
|
my $mimetype = $mm->checktype_contents($filecontents); |
|
if ($mimetype eq 'text/html') { |
|
my (%codebase,%allfiles); |
|
my $parse_result = &Apache::lonnet::extract_embedded_items($item,\%allfiles, |
|
\%codebase,\$filecontents); |
|
my $actionurl = "/public/$cdom/$cnum/syllabus"; |
|
my ($ignore,$num,$numpathchanges,$existing,$mapping) = |
|
&Apache::loncommon::ask_for_embedded_content($actionurl,undef,\%allfiles, |
|
\%codebase, |
|
{'context' => 'rewrites', |
|
'ignore_remote_references' => 1,}); |
|
$depbutton = (' ' x 3). |
|
&editfile_button($item,$context). |
|
&editbutton_js(); |
|
} |
|
} |
|
} |
|
return ($absurl,$filename,$depbutton); |
|
} |
|
|
sub fields_check_uncheck { |
sub fields_check_uncheck { |
my ($fields,$values) = @_; |
my ($fields,$values) = @_; |
return unless ((ref($fields) eq 'HASH') && (ref($values) eq 'HASH')); |
return unless ((ref($fields) eq 'HASH') && (ref($values) eq 'HASH')); |
Line 927 sub get_personnel {
|
Line 970 sub get_personnel {
|
} |
} |
|
|
sub save_changes { |
sub save_changes { |
my ($cnum,$cdom,$uploaded,$external,$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')) { |
return ($earlyout,$uploaded,$external,$output); |
return ($earlyout,$uploaded,$external,$minimal,$output); |
} |
} |
|
if ($env{'form.deleteuploaded'}) { |
|
my %storehash; |
|
if (($env{'form.choice'} eq 'file') && |
|
($env{'form.deleteuploaded'} eq 'file') && ($uploaded =~ /\w/)) { |
|
&Apache::lonnet::delenv('course.'.$env{'request.course.id'}.'.uploadedsyllabus'); |
|
&Apache::lonnet::delenv('course.'.$env{'request.course.id'}.'.externalsyllabus'); |
|
$storehash{'uploadedsyllabus'} = ''; |
|
$storehash{'externalsyllabus'} = ''; |
|
my $putres = &Apache::lonnet::put('environment',\%storehash,$cdom,$cnum); |
|
undef($uploaded); |
|
undef($external); |
|
} elsif (($env{'form.choice'} eq 'minimal') && |
|
($env{'form.deleteuploaded'} eq 'minimal') && ($minimal =~ /\w/)) { |
|
&Apache::lonnet::delenv('course.'.$env{'request.course.id'}.'.externalsyllabus'); |
|
&Apache::lonnet::delenv('course.'.$env{'request.course.id'}.'.minimalsyllabus'); |
|
$storehash{'externalsyllabus'} = ''; |
|
$storehash{'minimalsyllabus'} = ''; |
|
my $putres = &Apache::lonnet::put('environment',\%storehash,$cdom,$cnum); |
|
undef($external); |
|
undef($minimal); |
|
} |
|
} elsif ($env{'form.choice'} eq 'template') { |
#store what the user typed in to the template |
#store what the user typed in to the template |
if ($env{'form.choice'} eq 'template') { |
|
my @shown = &Apache::loncommon::get_env_multiple('form.showfield'); |
my @shown = &Apache::loncommon::get_env_multiple('form.showfield'); |
$syllabus->{'uploaded.fields'} = ''; |
$syllabus->{'uploaded.fields'} = ''; |
if (@shown == 0) { |
if (@shown == 0) { |
Line 995 sub save_changes {
|
Line 1059 sub save_changes {
|
$syllabus->{'uploaded.lastmodified'} = $now; |
$syllabus->{'uploaded.lastmodified'} = $now; |
my $putres = &Apache::lonnet::put('syllabus',$syllabus,$cdom,$cnum); |
my $putres = &Apache::lonnet::put('syllabus',$syllabus,$cdom,$cnum); |
if ($putres eq 'ok') { |
if ($putres eq 'ok') { |
my %storehash; |
($uploaded,$minimal,$external) = |
if ($courseenv->{'uploadedsyllabus'}) { |
&update_syllabus_env($cdom,$cnum,$courseenv,$env{'form.choice'},$uploaded, |
&Apache::lonnet::delenv('course.'.$env{'request.course.id'}.'.uploadedsyllabus'); |
$minimal,$external); |
$storehash{'uploadedsyllabus'} = ''; |
|
} |
|
if ($courseenv->{'externalsyllabus'}) { |
|
&Apache::lonnet::delenv('course.'.$env{'request.course.id'}.'.externalsyllabus'); |
|
$storehash{'externalsyllabus'} = ''; |
|
} |
|
$storehash{'updatedsyllabus'} = $now; |
|
&Apache::lonnet::put('environment',\%storehash,$cdom,$cnum); |
|
&Apache::lonnet::appenv({'course.'.$env{'request.course.id'}.'.updatedsyllabus' => $now}); |
|
if ($courseenv->{'externalsyllabus'} || $courseenv->{'uploadedsyllabus'}) { |
|
undef($uploaded); |
|
undef($external); |
|
} |
|
$output = '<div>'. |
$output = '<div>'. |
&Apache::lonhtmlcommon::confirm_success(&mt('Template saved.')). |
&Apache::lonhtmlcommon::confirm_success(&mt('Template saved.')). |
'</div>'; |
'</div>'; |
Line 1025 sub save_changes {
|
Line 1076 sub save_changes {
|
$output = '<div class="LC_info">'. |
$output = '<div class="LC_info">'. |
&mt('External URL unchanged.'). |
&mt('External URL unchanged.'). |
'</div>'; |
'</div>'; |
if ($uploaded) { |
($uploaded,$minimal,$external) = |
my $prefix; |
&update_syllabus_env($cdom,$cnum,$courseenv,$env{'form.choice'},$uploaded, |
my $home=&Apache::lonnet::homeserver($cnum,$cdom); |
$minimal,$external); |
if ($home ne 'no_host') { |
|
my $protocol = $Apache::lonnet::protocol{$home}; |
|
$protocol = 'http' if ($protocol ne 'https'); |
|
$prefix = $protocol.'://'.&Apache::lonnet::hostname($home); |
|
} |
|
unless ($external =~ m{^\Q$prefix/uploaded/$cdom/$cnum/portfolio/syllabus\E}) { |
|
&Apache::lonnet::delenv('course.'.$env{'request.course.id'}.'.uploadedsyllabus'); |
|
&Apache::lonnet::put('environment',{uploadedsyllabus => ''}, |
|
$cdom,$cnum); |
|
undef($uploaded); |
|
$earlyout = 1; |
|
} |
|
} |
|
} else { |
} else { |
$external=$env{'form.externalsyllabus'}; |
$external=$env{'form.externalsyllabus'}; |
$external =~ s/(`)//g; |
$external =~ s/(`)//g; |
Line 1052 sub save_changes {
|
Line 1090 sub save_changes {
|
$output = '<div>'. |
$output = '<div>'. |
&Apache::lonhtmlcommon::confirm_success(&mt('External URL saved.')). |
&Apache::lonhtmlcommon::confirm_success(&mt('External URL saved.')). |
'</div>'; |
'</div>'; |
if ($uploaded) { |
($uploaded,$minimal,$external) = |
my $prefix; |
&update_syllabus_env($cdom,$cnum,$courseenv,$env{'form.choice'},$uploaded, |
my $home=&Apache::lonnet::homeserver($cnum,$cdom); |
$minimal,$external); |
if ($home ne 'no_host') { |
|
my $protocol = $Apache::lonnet::protocol{$home}; |
|
$protocol = 'http' if ($protocol ne 'https'); |
|
$prefix = $protocol.'://'.&Apache::lonnet::hostname($home); |
|
} |
|
unless ($external =~ m{^\Q$prefix/uploaded/$cdom/$cnum/portfolio/syllabus\E}) { |
|
&Apache::lonnet::delenv('course.'.$env{'request.course.id'}.'.uploadedsyllabus'); |
|
&Apache::lonnet::put('environment',{uploadedsyllabus => ''}, |
|
$cdom,$cnum); |
|
undef($uploaded); |
|
} |
|
} |
|
} else { |
} else { |
$output = '<div class="LC_error">'. |
$output = '<div class="LC_error">'. |
&mt('An error occurred storing the external URL: [_1]',$putres). |
&mt('An error occurred storing the external URL: [_1]',$putres). |
Line 1078 sub save_changes {
|
Line 1104 sub save_changes {
|
&mt('External URL not saved -- invalid URL.'). |
&mt('External URL not saved -- invalid URL.'). |
'</div>'; |
'</div>'; |
} |
} |
} elsif ($env{'form.choice'} eq 'file') { |
} elsif (($env{'form.choice'} eq 'file') || ($env{'form.choice'} eq 'minimal')) { |
# Process file upload - phase one - upload and parse primary file. |
# Process file upload - phase one - upload and parse primary file. |
my %allfiles = (); |
my ($upload_result,$uploadphase,$url,$needlink,$error,$errormsg); |
my %codebase = (); |
if ($env{'form.choice'} eq 'file') { |
my ($upload_result,$uploadphase); |
if ($env{'form.syllabusfile.filename'}) { |
if ($env{'form.syllabusfile.filename'}) { |
my %allfiles = (); |
my ($url,$needlink) = &process_upload(\$output,$cnum,$cdom, |
my %codebase = (); |
\%allfiles,\%codebase); |
($url,$needlink) = &process_upload(\$output,$cnum,$cdom, |
if ($url =~ m{^/uploaded/\Q$cdom\E/\Q$cnum\E.*/[^/]+$}) { |
\%allfiles,\%codebase); |
my $exturl; |
} else { |
my $home=&Apache::lonnet::homeserver($cnum,$cdom); |
$output = '<div class="LC_info">'; |
if ($home ne 'no_host') { |
&mt('No file uploaded'). |
my $protocol = $Apache::lonnet::protocol{$home}; |
'</div>'; |
$protocol = 'http' if ($protocol ne 'https'); |
} |
$exturl = $protocol.'://'.&Apache::lonnet::hostname($home).$url; |
} elsif ($env{'form.choice'} eq 'minimal') { |
} |
my $title = $env{'form.syllabustitle'}; |
my %storehash = ( |
$title =~ s{`}{}g; |
uploadedsyllabus => $url, |
$title=~s/^\s+//; |
); |
$title=~s/\s+$//; |
if ($exturl) { |
if ($title eq '') { |
$storehash{'externalsyllabus'} = $exturl; |
$title = &mt('Syllabus'); |
if ($exturl =~ /\.(html?|txt|js|css)$/) { |
} |
$exturl .= '?inhibitmenu=yes'; |
my $initialtext = &mt('Replace with your own content.'); |
} |
my $newhtml = <<END; |
} else { |
<html> |
$storehash{'externalsyllabus'} = '', |
<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.*/[^/]+$}) { |
|
my $exturl = &home_http_host($cdom,$cnum); |
|
if ($exturl) { |
|
$exturl .= $url; |
|
} |
|
my %storehash; |
|
if ($env{'form.choice'} eq 'minimal') { |
|
$storehash{'minimalsyllabus'} = $url; |
|
} else { |
|
$storehash{'uploadedsyllabus'} = $url; |
|
} |
|
if ($exturl) { |
|
$storehash{'externalsyllabus'} = $exturl; |
|
if ($exturl =~ /\.(html?|txt|js|css)$/) { |
|
$exturl .= '?inhibitmenu=yes'; |
} |
} |
my $putres = |
} else { |
&Apache::lonnet::put('environment',\%storehash,$cdom,$cnum); |
$storehash{'externalsyllabus'} = '', |
if ($putres eq 'ok') { |
} |
&Apache::lonnet::make_public_indefinitely($url); |
my $putres = |
foreach my $key (keys(%storehash)) { |
&Apache::lonnet::put('environment',\%storehash,$cdom,$cnum); |
&Apache::lonnet::appenv({'course.'.$env{'request.course.id'}.'.'.$key => $storehash{$key}}); |
if ($putres eq 'ok') { |
} |
&Apache::lonnet::make_public_indefinitely($url); |
|
foreach my $key (keys(%storehash)) { |
|
&Apache::lonnet::appenv({'course.'.$env{'request.course.id'}.'.'.$key => $storehash{$key}}); |
|
} |
|
if ($env{'form.choice'} eq 'minimal') { |
|
$minimal = $url; |
|
} else { |
$uploaded = $url; |
$uploaded = $url; |
if ($needlink) { |
|
$output .= &return_to_editor($cdom,$cnum). |
|
&Apache::loncommon::end_page(); |
|
$earlyout = 1; |
|
} |
|
} |
} |
|
if ($needlink) { |
|
$output .= &return_to_editor($cdom,$cnum); |
|
$earlyout = 1; |
|
} |
|
($uploaded,$minimal,$external) = |
|
&update_syllabus_env($cdom,$cnum,$courseenv,$env{'form.choice'},$uploaded, |
|
$minimal,$external); |
|
} else { |
|
$error = 1; |
|
$errormsg = $putres; |
|
} |
|
} else { |
|
$error = 1; |
|
} |
|
if ($error) { |
|
$output = '<div class="LC_error">'; |
|
if ($env{'form.choice'} eq 'minimal') { |
|
$output = &mt('An error occurred creating the minimal template file [_1]',$errormsg); |
|
} else { |
|
$output = &mt('An error occurred storing the uploaded file [_1]',$errormsg); |
} |
} |
|
$output .= '</div>'; |
} |
} |
} elsif ($env{'form.phase'} eq 'upload_embedded') { |
} elsif ($env{'form.phase'} eq 'upload_embedded') { |
# Process file upload - phase two - upload embedded objects |
# Process file upload - phase two - upload embedded objects |
Line 1139 sub save_changes {
|
Line 1215 sub save_changes {
|
'/userfiles',$env{'form.primaryurl'}); |
'/userfiles',$env{'form.primaryurl'}); |
$result .= $modres; |
$result .= $modres; |
} |
} |
$output = $result.&return_to_editor($cdom,$cnum). |
$output = $result.&return_to_editor($cdom,$cnum); |
&Apache::loncommon::end_page(); |
|
$earlyout = 1; |
$earlyout = 1; |
} elsif ($env{'form.phase'} eq 'check_embedded') { |
} elsif ($env{'form.phase'} eq 'check_embedded') { |
# Process file upload - phase three - modify references in HTML file |
# Process file upload - phase three - modify references in HTML file |
Line 1149 sub save_changes {
|
Line 1224 sub save_changes {
|
&Apache::loncommon::modify_html_refs('syllabus','portfolio/syllabus', |
&Apache::loncommon::modify_html_refs('syllabus','portfolio/syllabus', |
$cnum,$cdom, |
$cnum,$cdom, |
'/userfiles',$env{'form.primaryurl'}); |
'/userfiles',$env{'form.primaryurl'}); |
$output = $result.&return_to_editor($cdom,$cnum). |
$output = $result.&return_to_editor($cdom,$cnum); |
&Apache::loncommon::end_page(); |
|
$earlyout = 1; |
$earlyout = 1; |
} |
} |
return ($earlyout,$uploaded,$external,$output); |
return ($earlyout,$uploaded,$external,$minimal,$output); |
|
} |
|
|
|
sub update_syllabus_env { |
|
my ($cdom,$cnum,$courseenv,$saved,$uploaded,$minimal,$external) = @_; |
|
return unless(ref($courseenv) eq 'HASH'); |
|
my $now = time; |
|
my (@envkeys,%storehash); |
|
if ($saved eq 'template') { |
|
if ($uploaded) { |
|
push(@envkeys,'uploaded'); |
|
} |
|
if ($minimal) { |
|
push(@envkeys,'minimal'); |
|
} |
|
if ($external) { |
|
push(@envkeys,'external'); |
|
} |
|
$storehash{'updatedsyllabus'} = $now; |
|
&Apache::lonnet::appenv({'course.'.$env{'request.course.id'}.'.updatedsyllabus' => $now |
|
}); |
|
|
|
} elsif ($saved eq 'url') { |
|
my $prefix = &home_http_host($cdom,$cnum); |
|
if ($external =~ m{^\Q$prefix/uploaded/$cdom/$cnum/portfolio/syllabus/\E(.+)$}) { |
|
my $file = $1; |
|
if ($file eq 'loncapa.html') { |
|
if ($uploaded) { |
|
push(@envkeys,'uploaded'); |
|
} |
|
} elsif ($minimal) { |
|
push(@envkeys,'minimal'); |
|
} |
|
} else { |
|
if ($uploaded) { |
|
push(@envkeys,'uploaded'); |
|
} |
|
if ($minimal) { |
|
push(@envkeys,'minimal'); |
|
} |
|
} |
|
} elsif ($saved eq 'file') { |
|
if ($minimal) { |
|
push(@envkeys,'minimal'); |
|
} |
|
} elsif ($saved eq 'minimal') { |
|
if ($uploaded) { |
|
push(@envkeys,'uploaded'); |
|
} |
|
} |
|
if (@envkeys > 0) { |
|
foreach my $item (@envkeys) { |
|
my $key = $item.'syllabus'; |
|
if ($courseenv->{$key}) { |
|
&Apache::lonnet::delenv('course.'.$env{'request.course.id'}.'.'.$key); |
|
$storehash{$key} = ''; |
|
} |
|
if ($item eq 'uploaded') { |
|
undef($uploaded); |
|
} |
|
if ($item eq 'external') { |
|
undef($external); |
|
} |
|
if ($item eq 'minimal') { |
|
undef($minimal); |
|
} |
|
} |
|
} |
|
if (keys(%storehash) > 0) { |
|
&Apache::lonnet::put('environment',\%storehash,$cdom,$cnum); |
|
} |
|
return ($uploaded,$minimal,$external); |
|
} |
|
|
|
sub home_http_host { |
|
my ($cdom,$cnum) = @_; |
|
my $home=&Apache::lonnet::homeserver($cnum,$cdom); |
|
if ($home ne 'no_host') { |
|
my $protocol = $Apache::lonnet::protocol{$home}; |
|
$protocol = 'http' if ($protocol ne 'https'); |
|
return $protocol.'//'.$home; |
|
} |
|
return; |
} |
} |
|
|
sub process_upload { |
sub process_upload { |
Line 1241 sub return_to_editor {
|
Line 1397 sub return_to_editor {
|
} |
} |
|
|
sub editfile_button { |
sub editfile_button { |
my $buttontext=&mt('Edit'); |
my ($url,$context) = @_; |
|
my $edittext=&mt('Edit'); |
|
my $deltext=&mt('Delete'); |
return <<"END"; |
return <<"END"; |
<input type="button" value="$buttontext" onclick="javascript:gotoeditor();" /> |
<input type="button" value="$edittext" onclick="javascript:gotoeditor('$url');" name="edit_$context" /> |
|
|
|
<input type="button" value="$deltext" onclick="javascript:dodelete('$context');" name="del_$context" /> |
|
<input type="hidden" value="" name="deleteuploaded" /> |
END |
END |
} |
} |
|
|
sub editbutton_js { |
sub editbutton_js { |
my ($url) = @_; |
|
return <<ENDJS; |
return <<ENDJS; |
<script type="text/javascript"> |
<script type="text/javascript"> |
// <![CDATA[ |
// <![CDATA[ |
function gotoeditor() { |
function gotoeditor(url) { |
document.location.href = '$url?forceedit=1'; |
document.location.href = url+'?editmode=1&forceedit=1'; |
|
} |
|
function dodelete(caller,url) { |
|
document.syllabus.deleteuploaded.value=caller; |
|
document.syllabus.submit(); |
} |
} |
// ]]> |
// ]]> |
</script> |
</script> |