--- loncom/interface/lonsimplepage.pm 2003/02/11 15:20:06 1.6
+++ loncom/interface/lonsimplepage.pm 2006/03/21 21:07:31 1.34
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Simple Page Editor
#
-# $Id: lonsimplepage.pm,v 1.6 2003/02/11 15:20:06 matthew Exp $
+# $Id: lonsimplepage.pm,v 1.34 2006/03/21 21:07:31 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -34,139 +34,336 @@ use Apache::loncommon;
use Apache::lonnet;
use Apache::lontexconvert;
use Apache::lonfeedback;
+use Apache::lonlocal;
+use Apache::lonprintout;
+use Apache::lonxml;
sub handler {
my $r = shift;
- $r->content_type('text/html');
+ &Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
return OK if $r->header_only;
-
+ my $target=$env{'form.grade_target'};
# ------------------------------------------------------------ Print the screen
- $r->print(<
-
-The LearningOnline Network with CAPA
-
-ENDDOCUMENT
- my (undef,undef,undef,undef,$marker)=split(/\//,$r->uri);
+ if ($target eq 'tex') {
+ $r->print(&Apache::lonprintout::print_latex_header($env{'form.latex_type'}));
+ }
+ my (undef,undef,undef,undef,$marker,$caller)=split(/\//,$r->uri);
# Is this even in a course?
- unless ($ENV{'request.course.id'}) {
- $r->print('Not in a course');
- return OK;
+ unless ($env{'request.course.id'}) {
+ if ($target ne 'tex') {
+ return &Apache::loncommon::simple_error_page($r,'',
+ 'Not in a course');
+ } else {
+ $r->print('\textbf{Not in a course}\end{document}');
+ }
}
- $marker=~s/\D//g;
-
- unless ($marker) {
- $r->print('Invalid call');
- return OK;
+ my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
+ my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
+ my $grp_view_permission = &Apache::lonnet::allowed('vcg',
+ $env{'request.course.id'});
+ my $namespace;
+
+ my %curr_group = ();
+ my %groupinfo = ();
+ if ($caller eq 'grppg') {
+ $marker =~ s/\W//g;
+ $namespace = 'grppage_'.$marker;
+ my %curr_groups;
+ if (!&Apache::loncommon::coursegroups(\%curr_groups,$dom,$crs,$marker)) {
+ return &Apache::loncommon::simple_error_page($r,'',
+ 'Invalid group name');
+ }
+ %groupinfo =
+ &Apache::loncommon::get_group_settings($curr_groups{$marker});
+ } else {
+ $marker=~s/\D//g;
+ $namespace = 'smppage_'.$marker;
}
- my $dom = $ENV{'course.'.$ENV{'request.course.id'}.'.domain'};
- my $crs = $ENV{'course.'.$ENV{'request.course.id'}.'.num'};
+ if (!$marker) {
+ return &Apache::loncommon::simple_error_page($r,'','Invalid call');
+ }
# --------------------------------------------------------- The syllabus fields
- my %syllabusfields=(
+ my %syllabusfields=&Apache::lonlocal::texthash(
'aaa_title' => 'Page Title',
'bbb_content' => 'Content',
'ccc_webreferences' => 'Web References');
+ if ($caller eq 'grppg') {
+ $syllabusfields{'abb_links'} = &mt('Functionality');
+ }
-# --------------------------------------------------------------- Force Student
+
+# ------------------------------------------------------------ Get query string
&Apache::loncommon::get_unprocessed_cgi
- ($ENV{'QUERY_STRING'},['forcestudent']);
+ ($ENV{'QUERY_STRING'},['forcestudent','forceedit','register']);
+# ----------------------------------------------------- Force menu registration
+ my $addentries='';
+ if ($env{'form.register'}) {
+ $addentries=' onLoad="'.&Apache::lonmenu::loadevents().
+ '" onUnload="'.&Apache::lonmenu::unloadevents().'"';
+ $r->print(&Apache::lonmenu::registerurl(1));
+ }
+# --------------------------------------------------------------- Force Student
my $forcestudent='';
- if ($ENV{'form.forcestudent'}) { $forcestudent='student'; };
+ if ($env{'form.forcestudent'} || $target eq 'tex' ) { $forcestudent='student'; };
+ my $forceedit='';
+ if ($env{'form.forceedit'}) { $forceedit='edit'; }
- my %syllabus=&Apache::lonnet::dump('smppage_'.$marker,$dom,$crs);
+
+ my %syllabus=&Apache::lonnet::dump($namespace,$dom,$crs);
# --------------------------------------- There is such a user, get environment
- $r->print(&Apache::loncommon::bodytag
- ("Course Page",$forcestudent,'','',$dom));
+ if ($target ne 'tex') {
+ my $title = 'Course Page';
+ if ($caller eq 'grppg') {
+ $title = 'Group Page';
+ }
+ $r->print(&Apache::lonhtmlcommon::htmlareaheaders().
+ &Apache::loncommon::endheadtag().
+ &Apache::loncommon::bodytag($title,$forcestudent,$addentries,
+ '',$dom,$env{'form.register'}));
+ }
- my $allowed=&Apache::lonnet::allowed('srm',$ENV{'request.course.id'});
+ if ($caller eq 'grppg') {
+ if (($grp_view_permission) ||
+ (&Apache::loncommon::check_group_access($caller))) {
+ unless(&Apache::lonnet::allowed('vgh',
+ $env{'request.course.id'}.'/'.$marker)) {
+ &display_group_links($r,$target,$marker,'view',%groupinfo);
+ return OK;
+ }
+ } else {
+ if ($target ne 'tex') {
+ $r->print(&Apache::loncommon::endheadtag().
+ &Apache::loncommon::bodytag().
+ 'You do not currently have rights to view this group.'.
+ &Apache::loncommon::end_page());
+ return OK;
+ } else {
+ $r->print('\textbf{You do not currently have rights to view this group}\end{document}');
+ }
+ }
+ }
- if ($forcestudent) { $allowed=0; }
-
- if ($allowed) {
- $r->print('
'.
-&Apache::loncommon::help_open_topic('Uploaded_Templates_TextBoxes','Help with filling in text boxes').' Show Public View'.
- &Apache::loncommon::help_open_topic('Uploaded_Templates_PublicView').'
'.
+ &Apache::loncommon::help_open_topic('Uploaded_Templates_TextBoxes','Help with filling in text boxes').' '.&mt('Show Student View').''.
+ &Apache::loncommon::help_open_topic('Uploaded_Templates_PublicView').'
');
+ } elsif ($privileged and $target ne 'tex') {
+ $r->print(''.&mt('Edit').'');
+ }
+ if (($env{'form.uploaddoc.filename'} and $target ne 'tex') &&
+ ($env{'form.storeupl'}) && ($allowed)) {
+ if ($env{'form.uploaddoc.filename'}=~/\.(gif|jpg|png|jpeg)$/i) {
+ if ($syllabus{'uploaded.photourl'}) {
+ &Apache::lonnet::removeuploadedurl($syllabus{'uploaded.photourl'});
+ }
+ if ($caller eq 'grppage') {
+ $syllabus{'uploaded.photourl'}=&Apache::lonnet::userfileupload(
+ 'uploaddoc',1,"grouppage/$marker");
+ } else {
+ $syllabus{'uploaded.photourl'}=
+ &Apache::lonnet::userfileupload('uploaddoc',1,'simplepage');
+ }
+ }
+ $syllabus{'uploaded.lastmodified'}=time;
+ &Apache::lonnet::put($namespace,\%syllabus,$dom,$crs);
+ }
+ if (($allowed) && ($env{'form.storesyl'})) {
+ foreach (keys %syllabusfields) {
+ my $field=$env{'form.'.$_};
+ chomp($field);
+ $field=~s/\s+$//s;
+ $field=~s/^\s+//s;
+ $field=~s/\ $//s;
+ $field=&Apache::lonfeedback::clear_out_html($field,1);
+ $syllabus{$_}=$field;
+ }
+ $syllabus{'uploaded.lastmodified'}=time;
+ &Apache::lonnet::put($namespace,\%syllabus,$dom,$crs);
+ }
# ---------------------------------------------------------------- Get syllabus
if (($syllabus{'uploaded.lastmodified'}) || ($allowed)) {
- if ($syllabus{'uploaded.photourl'}) {
- $r->print('');
- }
- if ($allowed) {
- $r->print(
- '