![]() ![]() | ![]() |
Bug #1019. Allow limited HTML in templates.
1: # The LearningOnline Network 2: # "About Me" Personal Information 3: # 4: # $Id: lonaboutme.pm,v 1.11 2003/02/10 16:22:28 www Exp $ 5: # 6: # Copyright Michigan State University Board of Trustees 7: # 8: # This file is part of the LearningOnline Network with CAPA (LON-CAPA). 9: # 10: # LON-CAPA is free software; you can redistribute it and/or modify 11: # it under the terms of the GNU General Public License as published by 12: # the Free Software Foundation; either version 2 of the License, or 13: # (at your option) any later version. 14: # 15: # LON-CAPA is distributed in the hope that it will be useful, 16: # but WITHOUT ANY WARRANTY; without even the implied warranty of 17: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18: # GNU General Public License for more details. 19: # 20: # You should have received a copy of the GNU General Public License 21: # along with LON-CAPA; if not, write to the Free Software 22: # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 23: # 24: # /home/httpd/html/adm/gpl.txt 25: # 26: # http://www.lon-capa.org/ 27: # 28: 29: package Apache::lonaboutme; 30: 31: use strict; 32: use Apache::Constants qw(:common); 33: use Apache::loncommon; 34: use Apache::lonnet; 35: use Apache::lontexconvert; 36: 37: sub handler { 38: my $r = shift; 39: $r->content_type('text/html'); 40: $r->send_http_header; 41: return OK if $r->header_only; 42: 43: # ------------------------------------------------------------ Print the screen 44: $r->print(<<ENDDOCUMENT); 45: <html> 46: <head> 47: <title>The LearningOnline Network with CAPA</title> 48: </head> 49: ENDDOCUMENT 50: my (undef,undef,$cdom,$cnum)=split(/\//,$r->uri); 51: # Is this even a user? 52: if (&Apache::lonnet::homeserver($cnum,$cdom) eq 'no_host') { 53: $r->print('<body>No user information available</body>'); 54: return OK; 55: } 56: # --------------------------------------------------------- The syllabus fields 57: my %syllabusfields=( 58: 'aaa_contactinfo' => 'Contact Information', 59: 'bbb_aboutme' => 'About Me', 60: 'ccc_webreferences' => 'Web References'); 61: 62: # --------------------------------------------------------------- Force Student 63: &Apache::loncommon::get_unprocessed_cgi 64: ($ENV{'QUERY_STRING'},['forcestudent']); 65: my $forcestudent=''; 66: if ($ENV{'form.forcestudent'}) { $forcestudent='student'; }; 67: 68: # --------------------------------------- There is such a user, get environment 69: my %courseenv=&Apache::lonnet::dump('environment',$cdom,$cnum); 70: $r->print(&Apache::loncommon::bodytag 71: ("Personal Information",$forcestudent,'','',$cdom)); 72: $r->print('<h1>'.&Apache::loncommon::plainname($cnum,$cdom).'</h1>'); 73: if ($courseenv{'nickname'}) { 74: $r->print( 75: '<h2>"'.$courseenv{'nickname'}. 76: '"</h2>'); 77: } 78: $r->print('<h3>'.$Apache::lonnet::domaindescription{$cdom}.'</h3>'. 79: '<p>'.&Apache::loncommon::messagewrapper('Send me a message',$cnum,$cdom). 80: '</p>'); 81: my %syllabus=&Apache::lonnet::dump('aboutme',$cdom,$cnum); 82: my $allowed=0; 83: 84: # does this user have privileges to post, etc? 85: 86: $allowed=(($ENV{'user.name'} eq $cnum) && 87: ($ENV{'user.domain'} eq $cdom)); 88: if ($forcestudent) { $allowed=0; } 89: 90: if ($allowed) { 91: $r->print('<p><b>Privacy Note:</b> The information you submit can be viewed by anybody who is logged into LON-CAPA. Do not provide information that you are not ready to share publically.</p>'. 92: '<p><a href="'.$r->uri.'?forcestudent=1">Show Public View</a>'. 93: &Apache::loncommon::help_open_topic('Uploaded_Templates_PublicView').'</p>'); 94: } 95: if (($ENV{'form.uploaddoc.filename'}) && 96: ($ENV{'form.storeupl'}) && ($allowed)) { 97: if ($ENV{'form.uploaddoc.filename'}=~/\.(gif|jpg|png|jpeg)$/) { 98: $syllabus{'uploaded.photourl'}= 99: &Apache::lonnet::userfileupload('uploaddoc'); 100: } 101: $syllabus{'uploaded.lastmodified'}=time; 102: &Apache::lonnet::put('aboutme',\%syllabus,$cdom,$cnum); 103: } 104: if (($allowed) && ($ENV{'form.storesyl'})) { 105: foreach (keys %syllabusfields) { 106: my $field=$ENV{'form.'.$_}; 107: $field=~s/\s+$//s; 108: $field=&Apache::lonfeedback::clear_out_html($field, 109: $ENV{'user.adv'}); 110: $syllabus{$_}=$field; 111: } 112: $syllabus{'uploaded.lastmodified'}=time; 113: &Apache::lonnet::put('aboutme',\%syllabus,$cdom,$cnum); 114: } 115: 116: # ---------------------------------------------------------------- Get syllabus 117: if (($syllabus{'uploaded.lastmodified'}) || ($allowed)) { 118: my $lastmod=$syllabus{'uploaded.lastmodified'}; 119: $lastmod=($lastmod?localtime($lastmod):'never'); 120: $r->print('Last updated: '.$lastmod); 121: if ($syllabus{'uploaded.photourl'}) { 122: $r->print('<img src="'. 123: &Apache::lonnet::tokenwrapper($syllabus{'uploaded.photourl'}). 124: '" align="right" />'); 125: } 126: if ($allowed) { 127: $r->print( 128: '<form method="post" enctype="multipart/form-data">'. 129: '<h3>Upload a Photo</h3>'. 130: '<input type="file" name="uploaddoc" size="50">'. 131: '<input type="submit" name="storeupl" value="Upload">'. 132: '</form><form method="post">'); 133: } 134: foreach (sort keys %syllabusfields) { 135: if (($syllabus{$_}) || ($allowed)) { 136: my $message=$syllabus{$_}; 137: $message=~s/\n/\<br \/\>/g; 138: $message 139: =~s/(http\:\/\/[^\s]+)/\<a href=\"$1\"\>\<tt\>$1\<\/tt\>\<\/a\>/g; 140: $message=&Apache::lontexconvert::msgtexconverted($message); 141: $r->print('<h3>'.$syllabusfields{$_}.'</h3><blockquote>'. 142: $message.'</blockquote>'); 143: if ($allowed) { 144: $r->print('<br /><textarea cols="80" rows="6" name="'.$_.'">'. 145: $syllabus{$_}. 146: '</textarea><input type="submit" name="storesyl" value="Store" />'); 147: } 148: } 149: } 150: if ($allowed) { 151: $r->print('</form>'); 152: } 153: $r->print('</p>'); 154: } else { 155: $r->print('<p>No personal information provided.</p>'); 156: } 157: if ($ENV{'request.course.id'}) { 158: if (&Apache::lonnet::allowed('srm',$ENV{'request.course.id'})) { 159: $r->print('<hr /><h3>User Notes, Records of Face-To-Face Discussions, and Critical Messages in Course</h3>Shared by course faculty and staff<br />'); 160: &Apache::lonmsg::disfacetoface($r,$cnum,$cdom); 161: $r->print(&Apache::loncommon::noteswrapper('Add Records',$cnum,$cdom)); 162: } 163: } 164: $r->print('</body></html>'); 165: return OK; 166: } 167: 168: 1; 169: __END__