version 1.1401, 2023/03/11 21:58:18
|
version 1.1411, 2023/09/10 18:12:54
|
Line 71 use Apache::lonuserutils();
|
Line 71 use Apache::lonuserutils();
|
use Apache::lonuserstate(); |
use Apache::lonuserstate(); |
use Apache::courseclassifier(); |
use Apache::courseclassifier(); |
use LONCAPA qw(:DEFAULT :match); |
use LONCAPA qw(:DEFAULT :match); |
|
use LONCAPA::ltiutils; |
use LONCAPA::LWPReq; |
use LONCAPA::LWPReq; |
use LONCAPA::map(); |
use LONCAPA::map(); |
use HTTP::Request; |
use HTTP::Request; |
Line 1851 sub colorfuleditor_js {
|
Line 1852 sub colorfuleditor_js {
|
if (document.getElementById('crsres_include_'+element)) { |
if (document.getElementById('crsres_include_'+element)) { |
include = document.getElementById('crsres_include_'+element).value; |
include = document.getElementById('crsres_include_'+element).value; |
} |
} |
populateCrsSelects(form,dirsel,filesel,1,include,1,0,1,1); |
populateCrsSelects(form,dirsel,filesel,1,include,1,0,1,1,0); |
} |
} |
} |
} |
if (document.getElementById('chooser_'+element+'_upload')) { |
if (document.getElementById('chooser_'+element+'_upload')) { |
Line 1859 sub colorfuleditor_js {
|
Line 1860 sub colorfuleditor_js {
|
if (currcrsupload == 'none') { |
if (currcrsupload == 'none') { |
dirsel = 'crsauthorpath_'+element; |
dirsel = 'crsauthorpath_'+element; |
filesel = ''; |
filesel = ''; |
populateCrsSelects(form,dirsel,filesel,0,'',1,0,1,0); |
populateCrsSelects(form,dirsel,filesel,0,'',1,0,1,0,1); |
} |
} |
} |
} |
} |
} |
Line 1874 sub colorfuleditor_js {
|
Line 1875 sub colorfuleditor_js {
|
if (document.getElementById('coursepath_'+element).length) { |
if (document.getElementById('coursepath_'+element).length) { |
numdirs = document.getElementById('coursepath_'+element).length; |
numdirs = document.getElementById('coursepath_'+element).length; |
} |
} |
|
if ((document.getElementById('hascrsres_'+element)) && |
|
(document.getElementById('nocrsres_'+element))) { |
|
if (numdirs) { |
|
document.getElementById('hascrsres_'+element).style.display='inline-block'; |
|
document.getElementById('nocrsres_'+element).style.display='none'; |
|
} else { |
|
document.getElementById('hascrsres_'+element).style.display='none'; |
|
document.getElementById('nocrsres_'+element).style.display='inline-block'; |
|
} |
|
} |
form.elements['coursepath_'+element].selectedIndex = 0; |
form.elements['coursepath_'+element].selectedIndex = 0; |
if (numdirs > 1) { |
if (numdirs > 1) { |
var selelem = form.elements['coursefile_'+element]; |
var selelem = form.elements['coursefile_'+element]; |
Line 2266 sub import_crsauthor_form {
|
Line 2277 sub import_crsauthor_form {
|
return (0) unless (($cnum ne '') && ($cdom ne '')); |
return (0) unless (($cnum ne '') && ($cdom ne '')); |
my @ids=&Apache::lonnet::current_machine_ids(); |
my @ids=&Apache::lonnet::current_machine_ids(); |
my ($output,$is_home,$toppath,%subdirs,%files,%selimport_menus,$include,$exclude); |
my ($output,$is_home,$toppath,%subdirs,%files,%selimport_menus,$include,$exclude); |
|
|
if (grep(/^\Q$crshome\E$/,@ids)) { |
if (grep(/^\Q$crshome\E$/,@ids)) { |
$is_home = 1; |
$is_home = 1; |
} |
} |
Line 2278 sub import_crsauthor_form {
|
Line 2289 sub import_crsauthor_form {
|
$js_only = join(',',map { &js_escape($_); } sort(keys(%{$include}))); |
$js_only = join(',',map { &js_escape($_); } sort(keys(%{$include}))); |
} |
} |
$exclude = &Apache::lonnet::priv_exclude(); |
$exclude = &Apache::lonnet::priv_exclude(); |
&Apache::lonnet::recursedirs($is_home,1,$include,$exclude,1,$toppath,'',\%subdirs,\%files); |
&Apache::lonnet::recursedirs($is_home,1,$include,$exclude,1,0,$toppath,'',\%subdirs,\%files); |
my $numdirs = scalar(keys(%files)); |
my $numdirs = scalar(keys(%files)); |
my %lt = &Apache::lonlocal::texthash ( |
my %lt = &Apache::lonlocal::texthash ( |
fnam => 'Filename', |
fnam => 'Filename', |
dire => 'Directory', |
dire => 'Directory', |
se => 'Select', |
se => 'Select', |
); |
); |
$output = $lt{'dire'}. |
$output = $lt{'dire'}.': '. |
'<select id="'.$firstselectname.'" name="'.$firstselectname.'" '. |
'<select id="'.$firstselectname.'" name="'.$firstselectname.'" '. |
'onchange="populateCrsSelects(this.form,'."'$firstselectname','$secondselectname',1,'$js_only',0,1,0,0".');">'. |
'onchange="populateCrsSelects(this.form,'."'$firstselectname','$secondselectname',1,'$js_only',0,1,0,0,0".');">'. |
'<option value="" selected="selected">'.$lt{'se'}.'</option>'; |
'<option value="" selected="selected">'.$lt{'se'}.'</option>'; |
|
if ($files{'/'}) { |
|
$output .= '<option value="/">/</option>'."\n"; |
|
} |
foreach my $key (sort { lc($a) cmp lc($b) } (keys(%files))) { |
foreach my $key (sort { lc($a) cmp lc($b) } (keys(%files))) { |
|
next if ($key eq '/'); |
$output .= '<option value="'.$key.'">'.$key.'</option>'."\n"; |
$output .= '<option value="'.$key.'">'.$key.'</option>'."\n"; |
} |
} |
$output .= '</select><br />'."\n". |
$output .= '</select><br />'."\n". |
$lt{'fnam'}.'<select id="'.$secondselectname.'" name="'.$secondselectname.'">'."\n". |
$lt{'fnam'}.': <select id="'.$secondselectname.'" name="'.$secondselectname.'">'."\n". |
'<option value="" selected="selected"></option>'."\n". |
'<option value="" selected="selected"></option>'."\n". |
'</select>'."\n"; |
'</select>'."\n". |
$output .= '<input type="hidden" id="crsres_include_'.$suffix.'" value="'.$only.'" />'; |
'<input type="hidden" id="crsres_include_'.$suffix.'" value="'.$only.'" />'; |
return ($numdirs,$output); |
return ($numdirs,$output); |
} |
} |
|
|
Line 2310 sub show_crsfiles_js {
|
Line 2325 sub show_crsfiles_js {
|
my $js = <<"END"; |
my $js = <<"END"; |
|
|
|
|
function populateCrsSelects (form,dirsel,filesel,exc,include,setdir,setfile,recurse,nonemptydir) { |
function populateCrsSelects (form,dirsel,filesel,exc,include,setdir,setfile,recurse,nonemptydir,addtopdir) { |
var relpath = ''; |
var relpath = ''; |
if ((setfile) && (dirsel != null) && (dirsel != 'undefined') && (dirsel != '')) { |
if ((setfile) && (dirsel != null) && (dirsel != 'undefined') && (dirsel != '')) { |
var currdir = form.elements[dirsel].options[form.elements[dirsel].selectedIndex].value; |
var currdir = form.elements[dirsel].options[form.elements[dirsel].selectedIndex].value; |
Line 2340 sub show_crsfiles_js {
|
Line 2355 sub show_crsfiles_js {
|
if (exc) { |
if (exc) { |
exclude = '$exclude'; |
exclude = '$exclude'; |
} |
} |
var params = "role=course&files=1&rec="+recurse+"&nonempty="+nonemptydir+"&exc="+exclude+"&inc="+include+"&path="+relpath; |
var params = "role=course&files=1&rec="+recurse+"&nonempty="+nonemptydir+"&exc="+exclude+"&inc="+include+"&addtop="+addtopdir+"&path="+relpath; |
http.open("POST", url, true); |
http.open("POST", url, true); |
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); |
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); |
http.onreadystatechange = function() { |
http.onreadystatechange = function() { |
Line 2358 sub show_crsfiles_js {
|
Line 2373 sub show_crsfiles_js {
|
} |
} |
var len = data.dirs.length; |
var len = data.dirs.length; |
if (len) { |
if (len) { |
if (len > 1) { |
selelem.options[selelem.options.length] = new Option('$se',''); |
selelem.options[selelem.options.length] = new Option('$se',''); |
|
} |
|
} |
|
if (len) { |
|
var j; |
var j; |
for (j = 0; j < len; j++) { |
for (j = 0; j < len; j++) { |
selelem.options[selelem.options.length] = new Option(data.dirs[j],data.dirs[j]); |
selelem.options[selelem.options.length] = new Option(data.dirs[j],data.dirs[j]); |
Line 2771 sub display_filter {
|
Line 2782 sub display_filter {
|
my $onchange = "javascript:toggleHistoryOptions(this,'containingphrase','$context', |
my $onchange = "javascript:toggleHistoryOptions(this,'containingphrase','$context', |
'$secondid','$thirdid')"; |
'$secondid','$thirdid')"; |
return '<span class="LC_nobreak"><label>'.&mt('Records: [_1]', |
return '<span class="LC_nobreak"><label>'.&mt('Records: [_1]', |
&Apache::lonmeta::selectbox('show',$env{'form.show'},undef, |
&Apache::lonmeta::selectbox('show',$env{'form.show'},'',undef, |
(&mt('all'),10,20,50,100,1000,10000))). |
(&mt('all'),10,20,50,100,1000,10000))). |
'</label></span> <span class="LC_nobreak">'. |
'</label></span> <span class="LC_nobreak">'. |
&mt('Filter: [_1]', |
&mt('Filter: [_1]', |
Line 6359 Input: (optional) filename from which br
|
Line 6370 Input: (optional) filename from which br
|
If page header is being requested for use in a frameset, then |
If page header is being requested for use in a frameset, then |
the second (option) argument -- frameset will be true, and |
the second (option) argument -- frameset will be true, and |
the target attribute set for links should be target="_parent". |
the target attribute set for links should be target="_parent". |
|
If $title is supplied as the thitd arg, that will be used to |
|
the left of the breadcrumbs tail for the current path. |
|
|
Returns: HTML div with CSTR path and recent box |
Returns: HTML div with CSTR path and recent box |
To be included on Authoring Space pages |
To be included on Authoring Space pages |
Line 6366 Returns: HTML div with CSTR path and rec
|
Line 6379 Returns: HTML div with CSTR path and rec
|
=cut |
=cut |
|
|
sub CSTR_pageheader { |
sub CSTR_pageheader { |
my ($trailfile,$frameset) = @_; |
my ($trailfile,$frameset,$title) = @_; |
if ($trailfile eq '') { |
if ($trailfile eq '') { |
$trailfile = $env{'request.filename'}; |
$trailfile = $env{'request.filename'}; |
} |
} |
Line 6389 sub CSTR_pageheader {
|
Line 6402 sub CSTR_pageheader {
|
$lastitem = $thisdisfn; |
$lastitem = $thisdisfn; |
} |
} |
|
|
my ($crsauthor,$title); |
my $crsauthor; |
if (($env{'request.course.id'}) && |
if (($env{'request.course.id'}) && |
($env{'course.'.$env{'request.course.id'}.'.num'} eq $uname) && |
($env{'course.'.$env{'request.course.id'}.'.num'} eq $uname) && |
($env{'course.'.$env{'request.course.id'}.'.domain'} eq $udom)) { |
($env{'course.'.$env{'request.course.id'}.'.domain'} eq $udom)) { |
$crsauthor = 1; |
$crsauthor = 1; |
$title = &mt('Course Authoring Space'); |
if ($title eq '') { |
} else { |
$title = &mt('Course Authoring Space'); |
|
} |
|
} elsif ($title eq '') { |
$title = &mt('Authoring Space'); |
$title = &mt('Authoring Space'); |
} |
} |
|
|
Line 6834 ENDJS
|
Line 6849 ENDJS
|
$endbodytag; |
$endbodytag; |
} |
} |
} |
} |
|
if ((ref($args) eq 'HASH') && ($args->{'dashjs'})) { |
|
$endbodytag = &Apache::lonhtmlcommon::dash_to_minus_js().$endbodytag; |
|
} |
return $endbodytag; |
return $endbodytag; |
} |
} |
|
|
Line 8150 fieldset {
|
Line 8168 fieldset {
|
/* overflow: hidden; */ |
/* overflow: hidden; */ |
} |
} |
|
|
|
fieldset#LC_selectuser { |
|
margin: 0; |
|
padding: 0; |
|
} |
|
|
article.geogebraweb div { |
article.geogebraweb div { |
margin: 0; |
margin: 0; |
} |
} |
Line 9749 sub symb_from_tinyurl {
|
Line 9772 sub symb_from_tinyurl {
|
} |
} |
} |
} |
|
|
|
sub usable_exttools { |
|
my %tooltypes; |
|
if ($env{'request.course.id'}) { |
|
if ($env{'course.'.$env{'request.course.id'}.'.internal.exttool'}) { |
|
if ($env{'course.'.$env{'request.course.id'}.'.internal.exttool'} eq 'both') { |
|
%tooltypes = ( |
|
crs => 1, |
|
dom => 1, |
|
); |
|
} elsif ($env{'course.'.$env{'request.course.id'}.'.internal.exttool'} eq 'crs') { |
|
$tooltypes{'crs'} = 1; |
|
} elsif ($env{'course.'.$env{'request.course.id'}.'.internal.exttool'} eq 'dom') { |
|
$tooltypes{'dom'} = 1; |
|
} |
|
} else { |
|
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
|
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
|
my $crstype = lc($env{'course.'.$env{'request.course.id'}.'.type'}); |
|
if ($crstype eq '') { |
|
$crstype = 'course'; |
|
} |
|
if ($crstype eq 'course') { |
|
if ($env{'course.'.$env{'request.course.id'}.'internal.coursecode'}) { |
|
$crstype = 'official'; |
|
} elsif ($env{'course.'.$env{'request.course.id'}.'.internal.textbook'}) { |
|
$crstype = 'textbook'; |
|
} elsif ($env{'course.'.$env{'request.course.id'}.'.internal.lti'}) { |
|
$crstype = 'lti'; |
|
} else { |
|
$crstype = 'unofficial'; |
|
} |
|
} |
|
my %domdefaults = &Apache::lonnet::get_domain_defaults($cdom); |
|
if ($domdefaults{$crstype.'domexttool'}) { |
|
$tooltypes{'dom'} = 1; |
|
} |
|
if ($domdefaults{$crstype.'exttool'}) { |
|
$tooltypes{'crs'} = 1; |
|
} |
|
} |
|
} |
|
return %tooltypes; |
|
} |
|
|
sub wishlist_window { |
sub wishlist_window { |
return(<<'ENDWISHLIST'); |
return(<<'ENDWISHLIST'); |
<script type="text/javascript"> |
<script type="text/javascript"> |
Line 10437 Scalar: 1 if 'Course' to be used, 0 othe
|
Line 10504 Scalar: 1 if 'Course' to be used, 0 othe
|
|
|
############################################### |
############################################### |
sub show_course { |
sub show_course { |
|
my ($udom,$uname) = @_; |
|
if (($udom ne '') && ($uname ne '')) { |
|
if (($udom ne $env{'user.domain'}) || ($uname ne $env{'user.name'})) { |
|
if (&Apache::lonnet::is_advanced_user($udom,$uname)) { |
|
return 0; |
|
} else { |
|
return 1; |
|
} |
|
} |
|
} |
my $course = !$env{'user.adv'}; |
my $course = !$env{'user.adv'}; |
if (!$env{'user.adv'}) { |
if (!$env{'user.adv'}) { |
foreach my $env (keys(%env)) { |
foreach my $env (keys(%env)) { |
Line 16468 sub assign_category_rows {
|
Line 16545 sub assign_category_rows {
|
|
|
|
|
sub commit_customrole { |
sub commit_customrole { |
my ($udom,$uname,$url,$three,$four,$five,$start,$end,$context) = @_; |
my ($udom,$uname,$url,$three,$four,$five,$start,$end,$context,$othdomby,$requester) = @_; |
my $result = &Apache::lonnet::assigncustomrole( |
my $result = &Apache::lonnet::assigncustomrole( |
$udom,$uname,$url,$three,$four,$five,$end,$start,undef,undef,$context); |
$udom,$uname,$url,$three,$four,$five,$end,$start,undef,undef, |
|
$context,$othdomby,$requester); |
my $output = &mt('Assigning custom role').' "'.$five.'" by '.$four.':'.$three.' in '.$url. |
my $output = &mt('Assigning custom role').' "'.$five.'" by '.$four.':'.$three.' in '.$url. |
($start?', '.&mt('starting').' '.localtime($start):''). |
($start?', '.&mt('starting').' '.localtime($start):''). |
($end?', ending '.localtime($end):'').': <b>'.$result.'</b><br />'; |
($end?', ending '.localtime($end):'').': <b>'.$result.'</b><br />'; |
Line 16482 sub commit_customrole {
|
Line 16560 sub commit_customrole {
|
} |
} |
|
|
sub commit_standardrole { |
sub commit_standardrole { |
my ($udom,$uname,$url,$three,$start,$end,$one,$two,$sec,$context,$credits) = @_; |
my ($udom,$uname,$url,$three,$start,$end,$one,$two,$sec,$context,$credits, |
|
$othdomby,$requester) = @_; |
my ($output,$logmsg,$linefeed,$result); |
my ($output,$logmsg,$linefeed,$result); |
if ($context eq 'auto') { |
if ($context eq 'auto') { |
$linefeed = "\n"; |
$linefeed = "\n"; |
Line 16491 sub commit_standardrole {
|
Line 16570 sub commit_standardrole {
|
} |
} |
if ($three eq 'st') { |
if ($three eq 'st') { |
$result = &commit_studentrole(\$logmsg,$udom,$uname,$url,$three,$start,$end, |
$result = &commit_studentrole(\$logmsg,$udom,$uname,$url,$three,$start,$end, |
$one,$two,$sec,$context,$credits); |
$one,$two,$sec,$context,$credits,$othdomby, |
|
$requester); |
if (($result =~ /^error/) || ($result eq 'not_in_class') || |
if (($result =~ /^error/) || ($result eq 'not_in_class') || |
($result eq 'unknown_course') || ($result eq 'refused')) { |
($result eq 'unknown_course') || ($result eq 'refused')) { |
$output = $logmsg.' '.&mt('Error: ').$result."\n"; |
$output = $logmsg.' '.&mt('Error: ').$result."\n"; |
Line 16511 sub commit_standardrole {
|
Line 16591 sub commit_standardrole {
|
$output = &mt('Assigning').' '.$three.' in '.$url. |
$output = &mt('Assigning').' '.$three.' in '.$url. |
($start?', '.&mt('starting').' '.localtime($start):''). |
($start?', '.&mt('starting').' '.localtime($start):''). |
($end?', '.&mt('ending').' '.localtime($end):'').': '; |
($end?', '.&mt('ending').' '.localtime($end):'').': '; |
$result = &Apache::lonnet::assignrole($udom,$uname,$url,$three,$end,$start,'','',$context); |
$result = &Apache::lonnet::assignrole($udom,$uname,$url,$three,$end,$start, |
|
'','',$context,$othdomby,$requester); |
if ($context eq 'auto') { |
if ($context eq 'auto') { |
$output .= $result.$linefeed; |
$output .= $result.$linefeed; |
} else { |
} else { |
Line 16527 sub commit_standardrole {
|
Line 16608 sub commit_standardrole {
|
|
|
sub commit_studentrole { |
sub commit_studentrole { |
my ($logmsg,$udom,$uname,$url,$three,$start,$end,$one,$two,$sec,$context, |
my ($logmsg,$udom,$uname,$url,$three,$start,$end,$one,$two,$sec,$context, |
$credits) = @_; |
$credits,$othdomby,$requester) = @_; |
my ($result,$linefeed,$oldsecurl,$newsecurl); |
my ($result,$linefeed,$oldsecurl,$newsecurl); |
if ($context eq 'auto') { |
if ($context eq 'auto') { |
$linefeed = "\n"; |
$linefeed = "\n"; |
Line 16551 sub commit_studentrole {
|
Line 16632 sub commit_studentrole {
|
} |
} |
$oldsecurl = $uurl; |
$oldsecurl = $uurl; |
$expire_role_result = |
$expire_role_result = |
&Apache::lonnet::assignrole($udom,$uname,$uurl,'st',$now,'','','',$context); |
&Apache::lonnet::assignrole($udom,$uname,$uurl,'st',$now, |
if ($env{'request.course.sec'} ne '') { |
'','','',$context,$othdomby,$requester); |
|
if ($env{'request.course.sec'} ne '') { |
if ($expire_role_result eq 'refused') { |
if ($expire_role_result eq 'refused') { |
my @roles = ('st'); |
my @roles = ('st'); |
my @statuses = ('previous'); |
my @statuses = ('previous'); |
Line 16578 sub commit_studentrole {
|
Line 16660 sub commit_studentrole {
|
&Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef, |
&Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef, |
undef,undef,undef,$sec, |
undef,undef,undef,$sec, |
$end,$start,'','',$cid, |
$end,$start,'','',$cid, |
'',$context,$credits); |
'',$context,$credits,'', |
|
$othdomby,$requester); |
if ($modify_section_result =~ /^ok/) { |
if ($modify_section_result =~ /^ok/) { |
if ($secchange == 1) { |
if ($secchange == 1) { |
if ($sec eq '') { |
if ($sec eq '') { |
Line 18600 sub parse_supplemental_title {
|
Line 18683 sub parse_supplemental_title {
|
$name = &HTML::Entities::encode($name,'"<>&\''); |
$name = &HTML::Entities::encode($name,'"<>&\''); |
$renametitle = &HTML::Entities::encode($renametitle,'"<>&\''); |
$renametitle = &HTML::Entities::encode($renametitle,'"<>&\''); |
$title='<i>'.&Apache::lonlocal::locallocaltime($time).'</i> '.$name; |
$title='<i>'.&Apache::lonlocal::locallocaltime($time).'</i> '.$name; |
if ($foldertitle ne '') { |
if ($foldertitle ne '') { |
$title .= ': <br />'.$foldertitle; |
$title .= ': <br />'.$foldertitle; |
} |
} |
} |
} |