version 1.127, 2013/05/16 20:03:51
|
version 1.138.2.5, 2019/07/30 21:59:39
|
Line 35 use Apache::loncommon;
|
Line 35 use Apache::loncommon;
|
use Apache::lonnet; |
use Apache::lonnet; |
use Apache::lontexconvert; |
use Apache::lontexconvert; |
use Apache::lonfeedback; |
use Apache::lonfeedback; |
|
use Apache::lonhtmlgateway; |
use Apache::lonannounce; |
use Apache::lonannounce; |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::lonhtmlcommon; |
use Apache::lonhtmlcommon; |
Line 53 sub handler {
|
Line 54 sub handler {
|
# ------------------------------------------------------------ Get query string |
# ------------------------------------------------------------ Get query string |
&Apache::loncommon::get_unprocessed_cgi |
&Apache::loncommon::get_unprocessed_cgi |
($ENV{'QUERY_STRING'},['register','forceedit','todocs', |
($ENV{'QUERY_STRING'},['register','forceedit','todocs', |
'folderpath','title']); |
'folderpath','title','only_body']); |
# ----------------------------------------------------- Is this even a course? |
# ----------------------------------------------------- Is this even a course? |
my $homeserver=&Apache::lonnet::homeserver($cnum,$cdom); |
my $homeserver=&Apache::lonnet::homeserver($cnum,$cdom); |
if ($homeserver eq 'no_host') { |
if ($homeserver eq 'no_host') { |
Line 73 sub handler {
|
Line 74 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 103 sub handler {
|
Line 98 sub handler {
|
my $uploaded=$courseenv{'uploadedsyllabus'}; |
my $uploaded=$courseenv{'uploadedsyllabus'}; |
my $minimal=$courseenv{'minimalsyllabus'}; |
my $minimal=$courseenv{'minimalsyllabus'}; |
|
|
if (($minimal =~/\w/) || ($uploaded =~/\w/)) { |
if (($minimal =~/\w/) || ($uploaded =~/\w/)) { |
my $item; |
my ($item,$is_pdf); |
if ($minimal =~/\w/) { |
if ($minimal =~/\w/) { |
if ($external =~ m{\Q$minimal\E$}) { |
if ($external =~ m{\Q$minimal\E$}) { |
undef($external); |
undef($external); |
Line 115 sub handler {
|
Line 110 sub handler {
|
undef($external); |
undef($external); |
} |
} |
$item = $uploaded; |
$item = $uploaded; |
|
if ($item =~ /\.pdf$/i) { |
|
$is_pdf = 1; |
|
} |
} |
} |
unless ($allowed && $forceedit) { |
unless ($allowed && $forceedit) { |
my $file=&Apache::lonnet::filelocation("",$item); |
my $file=&Apache::lonnet::filelocation("",$item); |
if ($file =~ /\.(tex|x?html?)$/) { |
if ($file =~ /\.(tex|x?html?)$/) { |
my $filetype = $1; |
my $filetype = $1; |
my $filecontents=&Apache::lonnet::getfile($file); |
my $filecontents=&Apache::lonnet::getfile($file); |
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 $texengine = $env{'form.texengine'}; |
$r->print(&Apache::loncommon::start_page("Syllabus",undef,\%args). |
if ($texengine eq '') { |
$result. |
$texengine = 'tth'; |
&Apache::loncommon::end_page()); |
} elsif (lc($texengine) eq 'jsmath') { |
|
$texengine = 'MathJax'; |
|
} |
|
my $result = &Apache::lontexconvert::converted(\$filecontents,$texengine); |
|
my %args; |
|
&get_breadcrumbs($cdom,$cnum,$crstype,\%args); |
|
if ($env{'form.only_body'}) { |
|
$args{'only_body'} = 1; |
|
} |
|
if ($env{'request.use_absolute'}) { |
|
$args{'use_absolute'} = $env{'request.use_absolute'}; |
|
} |
|
$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 161 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 { |
|
my $brcrum; |
|
if ($env{'form.folderpath'} =~ /^supplemental/) { |
|
my $title = $env{'form.title'}; |
|
if ($title eq '') { |
|
$title = &mt('Syllabus'); |
|
} |
|
$brcrum = |
|
&Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$title,1); |
|
} |
|
$r->print(&Apache::lonwrapper::wrapper($r,$item,$brcrum,$env{'request.use_absolute'}, |
|
undef,$is_pdf,&mt('Syllabus'))); |
|
} |
} |
} |
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 { |
|
my $is_ext = 1; |
|
my ($is_pdf,$brcrum); |
|
if ($external =~ /\.pdf$/i) { |
|
$is_pdf = 1; |
|
} |
|
if ($env{'form.folderpath'} =~ /^supplemental/) { |
|
my $title = $env{'form.title'}; |
|
if ($title eq '') { |
|
$title = &mt('Syllabus'); |
|
} |
|
$brcrum = |
|
&Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$title,1); |
|
} |
|
$r->print(&Apache::lonwrapper::wrapper($r,$external,$brcrum,$env{'request.use_absolute'}, |
|
$is_ext,$is_pdf,&mt('Syllabus'))); |
|
} |
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 246 sub handler {
|
Line 306 sub handler {
|
if ($allowed) { |
if ($allowed) { |
#---------------------------------- Print External URL Syllabus Info if editing |
#---------------------------------- Print External URL Syllabus Info if editing |
if ($target ne 'tex') { |
if ($target ne 'tex') { |
|
my $hostname = &Apache::lonnet::hostname($homeserver); |
my $protocol = $Apache::lonnet::protocol{$homeserver}; |
my $protocol = $Apache::lonnet::protocol{$homeserver}; |
$protocol = 'http' if ($protocol ne 'https'); |
$protocol = 'http' if ($protocol ne 'https'); |
my $link = $protocol.'://'.&Apache::lonnet::hostname($homeserver).$r->uri; |
my $link = $r->uri; |
|
if (($protocol eq 'https') && ($external =~ m{^http://})) { |
|
unless (&Apache::lonnet::uses_sts()) { |
|
$link .= '?usehttp=1'; |
|
$protocol = 'http'; |
|
} |
|
} |
|
$link = $protocol.'://'.$hostname.$link; |
$r->print('<div class="LC_left_float">' |
$r->print('<div class="LC_left_float">' |
.'<span class="LC_help_open_topic LC_info">' |
.'<span class="LC_help_open_topic LC_info">' |
.'<span class="LC_info">' |
.'<span class="LC_info">' |
Line 385 sub handler {
|
Line 453 sub handler {
|
} |
} |
$rsslinktext = &mt('Manage Course RSS Feeds/Blogs'); |
$rsslinktext = &mt('Manage Course RSS Feeds/Blogs'); |
if ($crstype eq 'Community') { |
if ($crstype eq 'Community') { |
$rsslinktext = &mt('Manage Communiity RSS Feeds/Blogs'); |
$rsslinktext = &mt('Manage Community RSS Feeds/Blogs'); |
} |
} |
} |
} |
my $editurl= &Apache::lonnet::absolute_url().'/adm/'.$cdom.'/'.$cnum.'/_rss.html'; |
my $editurl= &Apache::lonnet::absolute_url().'/adm/'.$cdom.'/'.$cnum.'/_rss.html'; |
Line 406 sub handler {
|
Line 474 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 520 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 546 ENDSCRIPT
|
Line 610 ENDSCRIPT
|
my $checkedstr = "var include = new Array('".join("','",@checked)."');"; |
my $checkedstr = "var include = new Array('".join("','",@checked)."');"; |
my $uncheckedstr = "var exclude = new Array('".join("','",@unchecked)."');"; |
my $uncheckedstr = "var exclude = new Array('".join("','",@unchecked)."');"; |
my $invurl = &mt('Invalid URL'); |
my $invurl = &mt('Invalid URL'); |
|
&js_escape(\$invurl); |
my $urlregexp = <<'ENDREGEXP'; |
my $urlregexp = <<'ENDREGEXP'; |
/^([a-z]([a-z]|\d|\+|-|\.)*):(\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?((\[(|(v[\da-f]{1,}\.(([a-z]|\d|-|\.|_|~)|[!\$&'\(\)\*\+,;=]|:)+))\])|((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=])*)(:\d*)?)(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*|(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)|((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)|((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)){0})(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i |
/^([a-z]([a-z]|\d|\+|-|\.)*):(\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?((\[(|(v[\da-f]{1,}\.(([a-z]|\d|-|\.|_|~)|[!\$&'\(\)\*\+,;=]|:)+))\])|((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=])*)(:\d*)?)(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*|(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)|((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)|((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)){0})(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i |
ENDREGEXP |
ENDREGEXP |
Line 570 function toggleEditor(pick) {
|
Line 635 function toggleEditor(pick) {
|
|
|
var regexp = $urlregexp; |
var regexp = $urlregexp; |
|
|
function extUrlPreview(caller) { |
function extUrlPreview(caller,protocol) { |
if (document.getElementById(caller)) { |
if (document.getElementById(caller)) { |
var url = document.getElementById(caller).value; |
var url = document.getElementById(caller).value; |
if (regexp.test(url)) { |
if (regexp.test(url)) { |
openMyModal(url,500,400,'yes'); |
var http_regex = /^http\:\/\//gi; |
|
if ((protocol == 'https') && (http_regex.test(url))) { |
|
window.open(url,"syllabuspreview","height=400,width=500,scrollbars=1,resizable=1,menubar=0,location=1"); |
|
} else { |
|
openMyModal(url,500,400,'yes'); |
|
} |
} else { |
} else { |
alert("$invurl"); |
alert("$invurl"); |
} |
} |
Line 674 ENDSCRIPT
|
Line 744 ENDSCRIPT
|
onload => 'setTemplateBoxes();', |
onload => 'setTemplateBoxes();', |
); |
); |
$args->{'add_entries'} = \%loaditem; |
$args->{'add_entries'} = \%loaditem; |
|
} else { |
|
if ($env{'request.use_absolute'}) { |
|
$args->{'use_absolute'} = $env{'request.use_absolute'}; |
|
} |
} |
} |
|
if ($env{'form.only_body'}) { |
|
$args->{'only_body'} = 1; |
|
} |
|
$args->{'hostname'} = $r->hostname(); |
my $start_page = |
my $start_page = |
&Apache::loncommon::start_page("Syllabus", $rss_link.$js,$args); |
&Apache::loncommon::start_page("Syllabus", $rss_link.$js,$args); |
if ($start_page) { |
if ($start_page) { |
Line 755 sub chooser {
|
Line 833 sub chooser {
|
$checked{'templatebox'} = $check; |
$checked{'templatebox'} = $check; |
$display{'templatebox'} = 'block'; |
$display{'templatebox'} = 'block'; |
} |
} |
|
my $protocol = ($ENV{'SERVER_PORT'} == 443?'https':'http'); |
|
|
my $output = |
my $output = |
'<form name="syllabus" method="post" enctype="multipart/form-data" action="">'."\n". |
'<form name="syllabus" method="post" enctype="multipart/form-data" action="">'."\n". |
Line 767 sub chooser {
|
Line 846 sub chooser {
|
$output .= '</fieldset></div>'."\n". |
$output .= '</fieldset></div>'."\n". |
'<div id="url" class="LC_left_float" style="display: '.$display{'url'}.'">'."\n". |
'<div id="url" class="LC_left_float" style="display: '.$display{'url'}.'">'."\n". |
'<fieldset><legend>'.$lt{'chourl'}.'</legend><span class="LC_nobreak">'."\n". |
'<fieldset><legend>'.$lt{'chourl'}.'</legend><span class="LC_nobreak">'."\n". |
'<a href="javascript:extUrlPreview('."'syllabusurl'".');">'.$lt{'pr'}.'</a></span> '."\n". |
'<a href="javascript:extUrlPreview('."'syllabusurl','$protocol'".');">'.$lt{'pr'}.'</a></span> '."\n". |
'<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". |
Line 823 sub chooser {
|
Line 902 sub chooser {
|
|
|
sub syllabus_file_info { |
sub syllabus_file_info { |
my ($item,$cnum,$cdom,$lonhost,$context) = @_; |
my ($item,$cnum,$cdom,$lonhost,$context) = @_; |
|
my $hostname = &Apache::lonnet::hostname($lonhost); |
my $protocol = $Apache::lonnet::protocol{$lonhost}; |
my $protocol = $Apache::lonnet::protocol{$lonhost}; |
$protocol = 'http' if ($protocol ne 'https'); |
$protocol = 'http' if ($protocol ne 'https'); |
my $absurl = $protocol.'://'.&Apache::lonnet::hostname($lonhost).$item; |
my $absurl = $protocol.'://'.$hostname.$item; |
my ($filename) = ($item =~ m{([^/]+)$}); |
my ($filename) = ($item =~ m{([^/]+)$}); |
my $file=&Apache::lonnet::filelocation("",$item); |
my $file=&Apache::lonnet::filelocation("",$item); |
my ($depbutton,$filetype,$editable); |
my ($depbutton,$filetype,$editable); |
Line 1011 sub get_personnel {
|
Line 1091 sub get_personnel {
|
} |
} |
if ($allowed) { |
if ($allowed) { |
my $item = '<span class="LC_nobreak"><label>'. |
my $item = '<span class="LC_nobreak"><label>'. |
'<input type="checkbox" name="hideuser" value="'.$element.'&'.$puname.':'.$pudom.'"'.$checked.' />'. |
'<input type="checkbox" name="hideuser" value="'.$element.'&'.$puname.':'.$pudom.'"'.$checked.' />'. |
&Apache::loncommon::aboutmewrapper($courseperson |
&Apache::loncommon::aboutmewrapper($courseperson |
, |
, |
$puname,$pudom). |
$puname,$pudom). |
Line 1040 sub get_personnel {
|
Line 1120 sub get_personnel {
|
} |
} |
if ($target ne 'tex') { |
if ($target ne 'tex') { |
if ($allowed) { |
if ($allowed) { |
$r->print(&Apache::loncommon::end_data_table_row()); |
$r->print('</td>'.&Apache::loncommon::end_data_table_row()); |
} else { |
} else { |
my $lastclose=$element eq $lastpers?1:0; |
my $lastclose=$element eq $lastpers?1:0; |
$r->print(&Apache::lonhtmlcommon::row_closure($lastclose)); |
$r->print(&Apache::lonhtmlcommon::row_closure($lastclose)); |
Line 1064 sub get_personnel {
|
Line 1144 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'}) { |
my ($was_ext,$is_ext,$putres); |
|
if ($external) { |
|
$was_ext = $external; |
|
} |
|
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'} = ''; |
$storehash{'externalsyllabus'} = ''; |
$storehash{'externalsyllabus'} = ''; |
my $putres = &Apache::lonnet::put('environment',\%storehash,$cdom,$cnum); |
$putres = &Apache::lonnet::put('environment',\%storehash,$cdom,$cnum); |
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'} = ''; |
$storehash{'minimalsyllabus'} = ''; |
$storehash{'minimalsyllabus'} = ''; |
my $putres = &Apache::lonnet::put('environment',\%storehash,$cdom,$cnum); |
$putres = &Apache::lonnet::put('environment',\%storehash,$cdom,$cnum); |
undef($external); |
undef($external); |
undef($minimal); |
undef($minimal); |
} |
} |
Line 1135 sub save_changes {
|
Line 1235 sub save_changes {
|
foreach my $syl_field (keys(%{$syllabusfields})) { |
foreach my $syl_field (keys(%{$syllabusfields})) { |
my $field=$env{'form.'.$syl_field}; |
my $field=$env{'form.'.$syl_field}; |
chomp($field); |
chomp($field); |
$field=~s/\s+$//s; |
my $gateway = Apache::lonhtmlgateway->new(); |
$field=~s/^\s+//s; |
$field = $gateway->process_incoming_html($field,1); |
$field=~s/\<br\s*\/*\>$//s; |
|
$field=&Apache::lonfeedback::clear_out_html($field,1); |
|
#here it will be stored |
#here it will be stored |
$syllabus->{$syl_field}=$field; |
$syllabus->{$syl_field}=$field; |
if ($syl_field eq 'lll_includeurl') { # clean up included URLs |
if ($syl_field eq 'lll_includeurl') { # clean up included URLs |
Line 1176 sub save_changes {
|
Line 1274 sub save_changes {
|
$syllabus->{'uploaded.domain'}=$env{'user.domain'}; |
$syllabus->{'uploaded.domain'}=$env{'user.domain'}; |
$syllabus->{'uploaded.name'}=$env{'user.name'}; |
$syllabus->{'uploaded.name'}=$env{'user.name'}; |
$syllabus->{'uploaded.lastmodified'} = $now; |
$syllabus->{'uploaded.lastmodified'} = $now; |
my $putres = &Apache::lonnet::put('syllabus',$syllabus,$cdom,$cnum); |
$putres = &Apache::lonnet::put('syllabus',$syllabus,$cdom,$cnum); |
if ($putres eq 'ok') { |
if ($putres eq 'ok') { |
($uploaded,$minimal,$external) = |
($uploaded,$minimal,$external) = |
&update_syllabus_env($cdom,$cnum,$courseenv,$env{'form.choice'},$uploaded, |
&update_syllabus_env($cdom,$cnum,$courseenv,$env{'form.choice'},$uploaded, |
Line 1201 sub save_changes {
|
Line 1299 sub save_changes {
|
} else { |
} else { |
$external=$env{'form.externalsyllabus'}; |
$external=$env{'form.externalsyllabus'}; |
$external =~ s/(`)//g; |
$external =~ s/(`)//g; |
my $putres = |
$putres = |
&Apache::lonnet::put('environment',{externalsyllabus=>$external}, |
&Apache::lonnet::put('environment',{externalsyllabus=>$external}, |
$cdom,$cnum); |
$cdom,$cnum); |
if ($putres eq 'ok') { |
if ($putres eq 'ok') { |
Line 1217 sub save_changes {
|
Line 1315 sub save_changes {
|
&mt('An error occurred storing the external URL: [_1]',$putres). |
&mt('An error occurred storing the external URL: [_1]',$putres). |
'</div>'; |
'</div>'; |
} |
} |
|
$is_ext = $external; |
} |
} |
} else { |
} else { |
$output = '<div class="LC_error">'. |
$output = '<div class="LC_error">'. |
Line 1233 sub save_changes {
|
Line 1332 sub save_changes {
|
($url,$needlink) = &process_upload(\$output,$cnum,$cdom, |
($url,$needlink) = &process_upload(\$output,$cnum,$cdom, |
\%allfiles,\%codebase); |
\%allfiles,\%codebase); |
} else { |
} else { |
$output = '<div class="LC_info">'; |
$output = '<div class="LC_info">'. |
&mt('No file uploaded'). |
&mt('No file uploaded'). |
'</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 1281 END
|
Line 1362 END
|
} else { |
} else { |
$storehash{'externalsyllabus'} = '', |
$storehash{'externalsyllabus'} = '', |
} |
} |
my $putres = |
$putres = |
&Apache::lonnet::put('environment',\%storehash,$cdom,$cnum); |
&Apache::lonnet::put('environment',\%storehash,$cdom,$cnum); |
if ($putres eq 'ok') { |
if ($putres eq 'ok') { |
&Apache::lonnet::make_public_indefinitely($url); |
&Apache::lonnet::make_public_indefinitely($url); |
Line 1346 END
|
Line 1427 END
|
$output = $result.&return_to_editor($cdom,$cnum); |
$output = $result.&return_to_editor($cdom,$cnum); |
$earlyout = 1; |
$earlyout = 1; |
} |
} |
|
if ($putres eq 'ok') { |
|
if ((($is_ext) && ($is_ext ne $was_ext)) || ($was_ext)) { |
|
my $chome = &Apache::lonnet::homeserver($cnum,$cdom); |
|
unless ($chome eq 'no_host') { |
|
my %crsinfo = &Apache::lonnet::courseiddump($cdom,'.',1,'.','.',$cnum,undef,undef,'.'); |
|
if (ref($crsinfo{$cdom.'_'.$cnum}) eq 'HASH') { |
|
if ($external =~ m{^http://}) { |
|
$crsinfo{$cdom.'_'.$cnum}{'extsyllplain'} = 1; |
|
} elsif ($crsinfo{$cdom.'_'.$cnum}{'extsyllplain'}) { |
|
delete($crsinfo{$cdom.'_'.$cnum}{'extsyllplain'}); |
|
} |
|
&Apache::lonnet::courseidput($cdom,\%crsinfo,$chome,'notime'); |
|
} |
|
} |
|
} |
|
} |
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 1420 sub update_syllabus_env {
|
Line 1555 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); |
if ($home ne 'no_host') { |
if ($home ne 'no_host') { |
|
my $hostname = &Apache::lonnet::hostname($home); |
my $protocol = $Apache::lonnet::protocol{$home}; |
my $protocol = $Apache::lonnet::protocol{$home}; |
$protocol = 'http' if ($protocol ne 'https'); |
$protocol = 'http' if ($protocol ne 'https'); |
return $protocol.'://'.$home; |
return $protocol.'://'.$hostname; |
} |
} |
return; |
return; |
} |
} |
Line 1527 sub editfile_button {
|
Line 1682 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; |
} |
} |
|
|
sub editbutton_js { |
sub editbutton_js { |
my %lt = &Apache::lonlocal::texthash( |
my %js_lt = &Apache::lonlocal::texthash( |
min => 'Are you sure you want to delete the contents of the syllabus template?', |
min => 'Are you sure you want to delete the contents of the syllabus template?', |
file => 'Are you sure you want to delete the uploaded syllabus file?', |
file => 'Are you sure you want to delete the uploaded syllabus file?', |
noundo => 'This action cannot be reversed.' |
noundo => 'This action cannot be reversed.' |
); |
); |
|
&js_escape(\%js_lt); |
return <<ENDJS; |
return <<ENDJS; |
<script type="text/javascript"> |
<script type="text/javascript"> |
// <![CDATA[ |
// <![CDATA[ |
Line 1545 sub editbutton_js {
|
Line 1701 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("$js_lt{'min'}"+"\\n"+"$js_lt{'noundo'}")) { |
|
document.syllabus.submit(); |
|
} |
} |
} |
} |
if (caller == 'file') { |
if (caller == 'file') { |
if (confirm("$js_lt{'file'}"+"\\n"+"$js_lt{'noundo'}")) { |
if (confirm("$lt{'file'}"+"\\n"+"$lt{'noundo'}")) { |
document.syllabus.submit(); |
document.syllabus.submit(); |
} |
} |
} |
} |
} |
return; |
return; |