--- loncom/xml/lonxml.pm 2001/08/07 22:57:50 1.107 +++ loncom/xml/lonxml.pm 2001/08/20 14:53:12 1.119 @@ -13,7 +13,7 @@ # 6/12,6/13 H. K. Ng # 6/16 Gerd Kortemeyer # 7/27 H. K. Ng -# 8/7 Gerd Kortemeyer +# 8/7,8/9,8/10,8/11,8/15,8/16,8/17,8/18,8/20 Gerd Kortemeyer package Apache::lonxml; use vars @@ -97,6 +97,12 @@ sub xmlbegin { sub xmlend { my $discussion=''; if ($ENV{'request.course.id'}) { + my $crs='/'.$ENV{'request.course.id'}; + if ($ENV{'request.course.sec'}) { + $crs.='_'.$ENV{'request.course.sec'}; + } + $crs=~s/\_/\//g; + my $seeid=&Apache::lonnet::allowed('rin',$crs); my $symb=&Apache::lonnet::symbread(); if ($symb) { my %contrib=&Apache::lonnet::restore($symb,$ENV{'request.course.id'}, @@ -107,13 +113,37 @@ sub xmlend { '<address><hr /><h2>Course Discussion of Resource</h2>'; my $idx; for ($idx=1;$idx<=$contrib{'version'};$idx++) { - my $message=$contrib{$idx.':message'}; - $message=~s/\n/\<br \/\>/g; - $discussion.='<p><b>'.$contrib{$idx.':sendername'}.' at '. - $contrib{$idx.':senderdomain'}.'</b> ('. + my $hidden=($contrib{'hidden'}=~/\.$idx\./); + unless (($hidden) && (!$seeid)) { + my $message=$contrib{$idx.':message'}; + $message=~s/\n/\<br \/\>/g; + if ($message) { + if ($hidden) { + $message='<font color="#888888">'.$message.'</font>'; + } + my $sender='Anonymous'; + if ((!$contrib{$idx.':anonymous'}) || ($seeid)) { + $sender=$contrib{$idx.':sendername'}.' at '. + $contrib{$idx.':senderdomain'}; + if ($contrib{$idx.':anonymous'}) { + $sender.=' (anonymous)'; + } + if ($seeid) { + if ($hidden) { + $sender.=' <a href="/adm/feedback?unhide='. + $symb.':::'.$idx.'">Make Visible</a>'; + } else { + $sender.=' <a href="/adm/feedback?hide='. + $symb.':::'.$idx.'">Hide</a>'; + } + } + } + $discussion.='<p><b>'.$sender.'</b> ('. localtime($contrib{$idx.':timestamp'}). '):<blockquote>'.$message. - '</blockquote></p>'; + '</blockquote></p>'; + } + } } $discussion.='</address>'; } @@ -122,6 +152,82 @@ sub xmlend { return $discussion.'</html>'; } +sub tokeninputfield { + my $defhost=$Apache::lonnet::perlvar{'lonhostID'}; + return (<<ENDINPUTFIELD) +<form method="post"> +<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" /></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" /> +</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,$symb,$tuname,$tudom,$tcrsid)=@_; + unless ($token) { return ''; } + + unless ($symb) { + $symb=&Apache::lonnet::symbread(); + } + unless ($tuname) { + $tuname=$ENV{'user.name'}; + $tudom=$ENV{'user.domain'}; + $tcrsid=$ENV{'request.course.id'}; + } + + my %reply=&Apache::lonnet::get('environment', + ['firstname','middlename','lastname','generation'], + $tudom,$tuname); + my $plainname=$reply{'firstname'}.' '. + $reply{'middlename'}.' '. + $reply{'lastname'}.' '. + $reply{'generation'}; + + if ($target eq 'web') { + return + '<img align="right" src="/cgi-bin/barcode.gif?encode='.$token.'" />'. + 'Checked out for '.$plainname. + '<br />User: '.$tuname.' at '.$tudom. + '<br />CourseID: '.$tcrsid. + '<br />DocID: '.$token. + '<br />Time: '.localtime().'<hr />'; + } else { + return $token; + } +} + sub fontsettings() { my $headerstring=''; if (($ENV{'browser.os'} eq 'mac') && (!$ENV{'browser.mathml'})) { @@ -172,6 +278,8 @@ ENDPARM menu.currentStale=0; menu.clearbut(3,1); menu.switchbutton + (6,3,'catalog.gif','catalog','info','catalog_info()'); + menu.switchbutton (8,1,'eval.gif','evaluate','this','gopost("/adm/evaluate",currentURL)'); menu.switchbutton (8,2,'fdbk.gif','feedback','on this','gopost("/adm/feedback",currentURL)'); @@ -200,7 +308,7 @@ ENDPARM menu.clearbut(7,3); menu.menucltim=menu.setTimeout( 'clearbut(2,1);clearbut(2,3);clearbut(8,1);clearbut(8,2);clearbut(8,3);'+ - 'clearbut(9,1);clearbut(9,2);clearbut(9,3);', + 'clearbut(9,1);clearbut(9,2);clearbut(9,3);clearbut(6,3)', 2000); } @@ -293,8 +401,8 @@ sub htmlclean { my $output= $tree->as_HTML(undef,' '); - $output=~s/\<(br|hr|img)([^\>\/]*)\>/\<$1$2 \/\>/gis; - $output=~s/\<\/(br|hr|img)\>//gis; + $output=~s/\<(br|hr|img|meta|allow)([^\>\/]*)\>/\<$1$2 \/\>/gis; + $output=~s/\<\/(br|hr|img|meta|allow)\>//gis; unless ($full) { $output=~s/\<[\/]*(body|head|html)\>//gis; } @@ -745,6 +853,9 @@ sub parstring { sub writeallows { my $thisurl='/res/'.&Apache::lonnet::declutter(shift); + if ($ENV{'httpref.'.$thisurl}) { + $thisurl=$ENV{'httpref.'.$thisurl}; + } my $thisdir=$thisurl; $thisdir=~s/\/[^\/]+$//; my %httpref=();