version 1.531.2.26, 2024/07/07 21:43:24
|
version 1.571, 2024/04/17 13:37:37
|
Line 230 sub xmlend {
|
Line 230 sub xmlend {
|
return $discussion; |
return $discussion; |
} |
} |
|
|
sub tokeninputfield { |
|
my $defhost=$Apache::lonnet::perlvar{'lonHostID'}; |
|
$defhost=~tr/a-z/A-Z/; |
|
return (<<ENDINPUTFIELD) |
|
<script type="text/javascript"> |
|
function updatetoken() { |
|
var comp=new Array; |
|
var barcode=unescape(document.tokeninput.barcode.value); |
|
comp=barcode.split('*'); |
|
if (typeof(comp[0])!="undefined") { |
|
document.tokeninput.codeone.value=comp[0]; |
|
} |
|
if (typeof(comp[1])!="undefined") { |
|
document.tokeninput.codetwo.value=comp[1]; |
|
} |
|
if (typeof(comp[2])!="undefined") { |
|
comp[2]=comp[2].toUpperCase(); |
|
document.tokeninput.codethree.value=comp[2]; |
|
} |
|
document.tokeninput.barcode.value=''; |
|
} |
|
</script> |
|
<form method="post" name="tokeninput" action=""> |
|
<table border="2" bgcolor="#FFFFBB"> |
|
<tr><th>DocID Checkin</th></tr> |
|
<tr><td> |
|
<table> |
|
<tr> |
|
<td>Scan in Barcode</td> |
|
<td><input type="text" size="22" name="barcode" |
|
onchange="updatetoken()"/></td> |
|
</tr> |
|
<tr><td><i>or</i> Type in DocID</td> |
|
<td> |
|
<input type="text" size="5" name="codeone" /> |
|
<b><font size="+2">*</font></b> |
|
<input type="text" size="5" name="codetwo" /> |
|
<b><font size="+2">*</font></b> |
|
<input type="text" size="10" name="codethree" value="$defhost" |
|
onchange="this.value=this.value.toUpperCase()" /> |
|
</td></tr> |
|
</table> |
|
</td></tr> |
|
<tr><td><input type="submit" value="Check in DocID" /></td></tr> |
|
</table> |
|
</form> |
|
ENDINPUTFIELD |
|
} |
|
|
|
sub maketoken { |
|
my ($symb,$tuname,$tudom,$tcrsid)=@_; |
|
unless ($symb) { |
|
$symb=&Apache::lonnet::symbread(); |
|
} |
|
unless ($tuname) { |
|
$tuname=$env{'user.name'}; |
|
$tudom=$env{'user.domain'}; |
|
$tcrsid=$env{'request.course.id'}; |
|
} |
|
return &Apache::lonnet::checkout($symb,$tuname,$tudom,$tcrsid); |
|
} |
|
|
|
sub printtokenheader { |
|
my ($target,$token,$tsymb,$tcrsid,$tudom,$tuname)=@_; |
|
unless ($token) { return ''; } |
|
|
|
my ($symb,$courseid,$domain,$name) = &Apache::lonnet::whichuser(); |
|
unless ($tsymb) { |
|
$tsymb=$symb; |
|
} |
|
unless ($tuname) { |
|
$tuname=$name; |
|
$tudom=$domain; |
|
$tcrsid=$courseid; |
|
} |
|
|
|
my $plainname=&Apache::loncommon::plainname($tuname,$tudom); |
|
|
|
if ($target eq 'web') { |
|
my %idhash=&Apache::lonnet::idrget($tudom,($tuname)); |
|
return |
|
'<img align="right" src="/cgi-bin/barcode.png?encode='.$token.'" />'. |
|
&mt('Checked out for').' '.$plainname. |
|
'<br />'.&mt('User').': '.$tuname.' at '.$tudom. |
|
'<br />'.&mt('ID').': '.$idhash{$tuname}. |
|
'<br />'.&mt('CourseID').': '.$tcrsid. |
|
'<br />'.&mt('Course').': '.$env{'course.'.$tcrsid.'.description'}. |
|
'<br />'.&mt('DocID').': '.$token. |
|
'<br />'.&mt('Time').': '.&Apache::lonlocal::locallocaltime().'<hr />'; |
|
} else { |
|
return $token; |
|
} |
|
} |
|
|
|
sub printalltags { |
sub printalltags { |
my $temp; |
foreach my $temp (sort(keys(%Apache::lonxml::alltags))) { |
foreach $temp (sort keys %Apache::lonxml::alltags) { |
|
&Apache::lonxml::debug("$temp -- ". |
&Apache::lonxml::debug("$temp -- ". |
join(',',@{ $Apache::lonxml::alltags{$temp} })); |
join(',',@{ $Apache::lonxml::alltags{$temp} })); |
} |
} |
Line 564 sub inner_xmlparse {
|
Line 469 sub inner_xmlparse {
|
|
|
if ($token->[0] eq 'E') { |
if ($token->[0] eq 'E') { |
if ($dontpop) { |
if ($dontpop) { |
$lastdontpop = $token; |
$lastdontpop = $token; |
} else { |
} else { |
$lastendtag = $token->[1]; |
$lastendtag = $token->[1]; |
&end_tag($stack,$parstack,$token); |
&end_tag($stack,$parstack,$token); |
Line 578 sub inner_xmlparse {
|
Line 483 sub inner_xmlparse {
|
} |
} |
} |
} |
|
|
if (($#$stack == 0) && ($stack->[0] eq 'physnet') && ($target eq 'web') && |
if (($#$stack == 0) && ($stack->[0] eq 'physnet') && ($target eq 'web') && |
($lastendtag eq 'LONCAPA_INTERNAL_TURN_STYLE_ON')) { |
($lastendtag eq 'LONCAPA_INTERNAL_TURN_STYLE_ON')) { |
if ((ref($lastdontpop) eq 'ARRAY') && ($lastdontpop->[1] eq 'physnet')) { |
if ((ref($lastdontpop) eq 'ARRAY') && ($lastdontpop->[1] eq 'physnet')) { |
&end_tag($stack,$parstack,$lastdontpop); |
&end_tag($stack,$parstack,$lastdontpop); |
Line 1091 sub decreasedepth {
|
Line 996 sub decreasedepth {
|
sub get_id { |
sub get_id { |
my ($parstack,$safeeval)=@_; |
my ($parstack,$safeeval)=@_; |
my $id= &Apache::lonxml::get_param('id',$parstack,$safeeval); |
my $id= &Apache::lonxml::get_param('id',$parstack,$safeeval); |
if ($env{'request.state'} eq 'construct' && $id =~ /([._]|[^\w\s\-])/) { |
if ($env{'request.state'} eq 'construct' && $id =~ /([._]|[^\w\s\-])/) { |
&error(&mt('ID [_1] contains invalid characters. IDs are only allowed to contain letters, numbers, spaces and -','"<tt>'.$id.'</tt>"')); |
&error(&mt('ID [_1] contains invalid characters. IDs are only allowed to contain letters, numbers, spaces and -','"<tt>'.$id.'</tt>"')); |
} |
} |
if ($id =~ /^\s*$/) { $id = $Apache::lonxml::curdepth; } |
if ($id =~ /^\s*$/) { $id = $Apache::lonxml::curdepth; } |
Line 1633 sub renderingoptions {
|
Line 1538 sub renderingoptions {
|
return $output; |
return $output; |
} |
} |
|
|
sub setmode_javascript { |
|
return <<"ENDSCRIPT"; |
|
<script type="text/javascript"> |
|
// <![CDATA[ |
|
function setmode(form,probmode) { |
|
var initial = form.problemmode.value; |
|
form.problemmode.value = probmode; |
|
form.submit(); |
|
form.problemmode.value = initial; |
|
} |
|
// ]]> |
|
</script> |
|
ENDSCRIPT |
|
} |
|
|
|
sub inserteditinfo { |
sub inserteditinfo { |
my ($filecontents,$filetype,$filename,$symb,$itemtitle,$folderpath,$uri,$action) = @_; |
my ($filecontents,$filetype,$filename,$symb,$itemtitle,$folderpath,$uri,$action) = @_; |
$filecontents = &HTML::Entities::encode($filecontents,'<>&"'); |
$filecontents = &HTML::Entities::encode($filecontents,'<>&"'); |
Line 1701 FULLPAGE
|
Line 1591 FULLPAGE
|
} |
} |
} elsif ($symb || $folderpath) { |
} elsif ($symb || $folderpath) { |
$deps_button = &Apache::lonhtmlcommon::dependencies_button()."\n"; |
$deps_button = &Apache::lonhtmlcommon::dependencies_button()."\n"; |
$initialize .= |
$initialize .= |
&Apache::lonhtmlcommon::dependencycheck_js($symb,$itemtitle, |
&Apache::lonhtmlcommon::dependencycheck_js($symb,$itemtitle, |
undef,$folderpath,$uri)."\n"; |
undef,$folderpath,$uri)."\n"; |
} |
} |
Line 1723 FULLPAGE
|
Line 1613 FULLPAGE
|
my %lt=&Apache::lonlocal::texthash('st' => 'Save and Edit', |
my %lt=&Apache::lonlocal::texthash('st' => 'Save and Edit', |
'vi' => 'Save and View', |
'vi' => 'Save and View', |
'dv' => 'Discard Edits and View', |
'dv' => 'Discard Edits and View', |
'un' => 'undo', |
'un' => 'Undo', |
'ed' => 'Edit'); |
'ed' => 'Edit', |
|
'ew' => 'Edit with Daxe'); |
my $spelllink = &Apache::lonhtmlcommon::spelllink('xmledit','filecont'); |
my $spelllink = &Apache::lonhtmlcommon::spelllink('xmledit','filecont'); |
my $textarea_events = &Apache::edit::element_change_detection(); |
my $textarea_events = &Apache::edit::element_change_detection(); |
my $form_events = &Apache::edit::form_change_detection(); |
my $form_events = &Apache::edit::form_change_detection(); |
Line 1740 FULLPAGE
|
Line 1631 FULLPAGE
|
} |
} |
} |
} |
} |
} |
my ($undo,%onclick); |
my ($undo,$daxebutton,%onclick); |
foreach my $item ('discard','undo') { |
foreach my $item ('discard','undo','daxe') { |
$onclick{$item} = 'onclick="still_ask=true;setmode(this.form,'."'$item'".')"'; |
$onclick{$item} = 'onclick="still_ask=true;setmode(this.form,'."'$item'".')"'; |
} |
} |
foreach my $item ('saveedit','saveview') { |
foreach my $item ('saveedit','saveview') { |
$onclick{$item} = 'onclick="is_submit=true;setmode(this.form,'."'$item'".')"'; |
$onclick{$item} = 'onclick="is_submit=true;setmode(this.form,'."'$item'".')"'; |
} |
} |
unless ($uri =~ m{^/uploaded/}) { |
unless ($uri =~ m{^/uploaded/}) { |
$undo = '<input type="submit" name="Undo" accesskey="u" value="'.$lt{'un'}.'" '. |
$undo = '<input type="button" name="Undo" accesskey="u" value="'.$lt{'un'}.'" '. |
$onclick{'undo'}.' />'."\n"; |
$onclick{'undo'}.' />'."\n"; |
} |
} |
$initialize .= &setmode_javascript(); |
$initialize .= &setmode_javascript(); |
|
if ($filetype eq 'html') { |
|
my %editors = &Apache::loncommon::permitted_editors(); |
|
if ($editors{'daxe'}) { |
|
$daxebutton = '<input type="button" name="editwithdaxe" accesskey="w" value="'.$lt{'ew'}.'" '. |
|
$onclick{'daxe'}.' />'."\n"; |
|
} |
|
} |
my $editfooter=(<<ENDFOOTER); |
my $editfooter=(<<ENDFOOTER); |
$initialize |
$initialize |
<a name="editsection" /> |
<a name="editsection" /> |
Line 1770 $initialize
|
Line 1668 $initialize
|
</div> |
</div> |
<div> |
<div> |
<input type="button" name="discardview" accesskey="d" value="$lt{'dv'}" $onclick{'discard'} /> |
<input type="button" name="discardview" accesskey="d" value="$lt{'dv'}" $onclick{'discard'} /> |
$undo $deps_button $dragmath_button $htmlerror |
$undo $deps_button $daxebutton $dragmath_button $htmlerror |
</div> |
</div> |
</div> |
</div> |
<textarea $textarea_events style="width:100%" cols="80" rows="44" name="filecont" id="filecont" $textareaclass>$filecontents</textarea><br />$spelllink |
<textarea $textarea_events style="width:100%" cols="80" rows="44" name="filecont" id="filecont" $textareaclass>$filecontents</textarea><br />$spelllink |
Line 1783 ENDFOOTER
|
Line 1681 ENDFOOTER
|
return ($editfooter,$add_to_onload,$add_to_onresize); |
return ($editfooter,$add_to_onload,$add_to_onresize); |
} |
} |
|
|
|
sub setmode_javascript { |
|
return <<"ENDSCRIPT"; |
|
<script type="text/javascript"> |
|
// <![CDATA[ |
|
function setmode(form,probmode) { |
|
if (probmode == 'daxe') { |
|
var url = new URL(document.location.href); |
|
window.location = url.protocol+'//'+url.hostname+'/daxepage'+url.pathname; |
|
} else { |
|
var initial = form.problemmode.value; |
|
form.problemmode.value = probmode; |
|
form.submit(); |
|
form.problemmode.value = initial; |
|
} |
|
} |
|
// ]]> |
|
</script> |
|
ENDSCRIPT |
|
} |
|
|
|
sub seteditor_javascript { |
|
my ($is_course_doc,$is_supp,$supp_path,$supp_title) = @_; |
|
my $symb; |
|
if ($is_course_doc) { |
|
if (!$is_supp) { |
|
($symb) = &Apache::lonnet::whichuser(); |
|
if ($symb) { |
|
$symb = &escape($symb); |
|
} |
|
} |
|
} |
|
return <<"ENDSCRIPT"; |
|
<script type="text/javascript"> |
|
// <![CDATA[ |
|
function seteditmode(form,editor) { |
|
var querystr = ''; |
|
var supplemental = '$is_supp'; |
|
var coursedoc = '$is_course_doc'; |
|
if (coursedoc) { |
|
if (supplemental) { |
|
var supppath = '$supp_path'; |
|
var supptitle = '$supp_title'; |
|
if (supppath) { |
|
querystr = 'folderpath='+supppath; |
|
} |
|
if (supptitle) { |
|
if (querystr) { |
|
querystr += '&'; |
|
} |
|
querystr += 'title='+supptitle; |
|
} |
|
} |
|
} |
|
if (editor == 'daxe') { |
|
var url = new URL(document.location.href); |
|
var newloc = url.protocol+'//'+url.hostname+'/daxepage'+url.pathname; |
|
if (querystr) { |
|
if (/\\?/.test(url.pathname)) { |
|
newloc += '&'; |
|
} else { |
|
newloc += '?'; |
|
} |
|
newloc += querystr; |
|
} |
|
window.location = newloc; |
|
} else { |
|
if (coursedoc) { |
|
var curraction = form.action; |
|
var idx = curraction.indexOf('?'); |
|
if (idx !== -1) { |
|
form.action = curraction.substring(0,idx); |
|
} |
|
form.action += '?forceedit=1®ister=1'; |
|
if (querystr) { |
|
form.action += '&'+querystr; |
|
} |
|
} |
|
if (editor == 'edit') { |
|
form.editmode.value = editor; |
|
} else { |
|
form.editmode.value = ''; |
|
} |
|
form.submit(); |
|
} |
|
} |
|
// ]]> |
|
</script> |
|
ENDSCRIPT |
|
} |
|
|
sub get_target { |
sub get_target { |
my $viewgrades=&Apache::lonnet::allowed('vgr',$env{'request.course.id'}); |
my $viewgrades=&Apache::lonnet::allowed('vgr',$env{'request.course.id'}); |
if ( $env{'request.state'} eq 'published') { |
if ( $env{'request.state'} eq 'published') { |
Line 1980 ENDNOTFOUND
|
Line 1968 ENDNOTFOUND
|
} |
} |
my $brcrum; |
my $brcrum; |
if ($env{'request.state'} eq 'construct') { |
if ($env{'request.state'} eq 'construct') { |
$brcrum = [{'href' => &Apache::loncommon::authorspace($request->uri), |
my $text = 'Authoring Space'; |
'text' => 'Authoring Space'}, |
my $href = &Apache::loncommon::authorspace($request->uri); |
|
if ($env{'request.course.id'}) { |
|
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
|
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
|
if ($href eq "/priv/$cdom/$cnum/") { |
|
$text = 'Course Authoring Space'; |
|
} |
|
} |
|
$brcrum = [{'href' => $href, |
|
'text' => $text,}, |
{'href' => '', |
{'href' => '', |
'text' => $breadcrumbtext}]; |
'text' => $breadcrumbtext}]; |
} else { |
} else { |
Line 2009 ENDNOTFOUND
|
Line 2006 ENDNOTFOUND
|
$displayfile=$request->uri; |
$displayfile=$request->uri; |
if ($request->uri =~ m{^/uploaded/}) { |
if ($request->uri =~ m{^/uploaded/}) { |
if ($env{'request.course.id'}) { |
if ($env{'request.course.id'}) { |
if ($request->uri =~ m{^\Q/uploaded/$cdom/$cnum/supplemental/\E}) { |
if ($request->uri =~ m{^\Q/uploaded/$cdom/$cnum/\E(docs|supplemental)/}) { |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
if ($1 eq 'supplemental') { |
['folderpath','title']); |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
|
['folderpath','title']); |
|
} |
|
if (($env{'request.state'} eq 'edit') && ($env{'form.editmode'} eq 'edit') && |
|
($filetype eq 'html')) { |
|
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
|
} |
} elsif ($request->uri =~ m{^\Q/uploaded/$cdom/$cnum/portfolio/syllabus/\E(.+)$}) { |
} elsif ($request->uri =~ m{^\Q/uploaded/$cdom/$cnum/portfolio/syllabus/\E(.+)$}) { |
my $filename = $1; |
my $filename = $1; |
if ($1 eq 'loncapa.html') { |
if ($1 eq 'loncapa.html') { |
Line 2043 ENDNOTFOUND
|
Line 2046 ENDNOTFOUND
|
'onload' => $add_to_onload, }); |
'onload' => $add_to_onload, }); |
my $header; |
my $header; |
if ($env{'request.state'} eq 'construct') { |
if ($env{'request.state'} eq 'construct') { |
|
my $text = 'Authoring Space'; |
|
my $href = &Apache::loncommon::authorspace($request->uri); |
|
if ($env{'request.course.id'}) { |
|
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
|
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
|
if ($href eq "/priv/$cdom/$cnum/") { |
|
$text = 'Course Authoring Space'; |
|
} |
|
} |
$options{'bread_crumbs'} = [{ |
$options{'bread_crumbs'} = [{ |
'href' => &Apache::loncommon::authorspace($request->uri), |
'href' => $href, |
'text' => 'Authoring Space'}, |
'text' => $text}, |
{'href' => '', |
{'href' => '', |
'text' => $breadcrumbtext}]; |
'text' => $breadcrumbtext}]; |
$header = &Apache::loncommon::head_subbox( |
$header = &Apache::loncommon::head_subbox( |
Line 2100 sub get_courseupload_hierarchy {
|
Line 2112 sub get_courseupload_hierarchy {
|
} |
} |
if ($title) { |
if ($title) { |
push(@pathitems,&unescape($title)); |
push(@pathitems,&unescape($title)); |
|
$itemtitle = $title; |
} |
} |
$displaypath = join(' » ',@pathitems); |
$displaypath = join(' » ',@pathitems); |
} else { |
} else { |
Line 2272 sub add_messages {
|
Line 2285 sub add_messages {
|
|
|
sub get_param { |
sub get_param { |
my ($param,$parstack,$safeeval,$context,$case_insensitive, $noelide) = @_; |
my ($param,$parstack,$safeeval,$context,$case_insensitive, $noelide) = @_; |
|
|
if ( ! $context ) { $context = -1; } |
if ( ! $context ) { $context = -1; } |
my $args =''; |
my $args =''; |
if ( $#$parstack > (-2-$context) ) { $args=$$parstack[$context]; } |
if ( $#$parstack > (-2-$context) ) { $args=$$parstack[$context]; } |
Line 2279 sub get_param {
|
Line 2293 sub get_param {
|
$args=$Apache::lonxml::style_values.$args; |
$args=$Apache::lonxml::style_values.$args; |
} |
} |
|
|
|
|
if ($noelide) { |
if ($noelide) { |
$args =~ s/'\$/'\\\$/g; |
# $args =~ s/\\'/'/g; |
|
$args =~ s/'\$/'\\\$/g; |
} |
} |
|
|
if ( ! $args ) { return undef; } |
if ( ! $args ) { return undef; } |
if ( $case_insensitive ) { |
if ( $case_insensitive ) { |
if ($args =~ s/(my (?:.*))(\$\Q$param\E[,\)])/$1.lc($2)/ei) { |
if ($args =~ s/(my (?:.*))(\$\Q$param\E[,\)])/$1.lc($2)/ei) { |
|
|
return &Apache::run::run("{$args;".'return $'.$param.'}', |
return &Apache::run::run("{$args;".'return $'.$param.'}', |
$safeeval); #' |
$safeeval); #' |
} else { |
} else { |
Line 2293 sub get_param {
|
Line 2310 sub get_param {
|
} |
} |
} else { |
} else { |
if ( $args =~ /my .*\$\Q$param\E[,\)]/ ) { |
if ( $args =~ /my .*\$\Q$param\E[,\)]/ ) { |
|
|
return &Apache::run::run("{$args;".'return $'.$param.'}', |
return &Apache::run::run("{$args;".'return $'.$param.'}', |
$safeeval); #' |
$safeeval); #' |
} else { |
} else { |