--- loncom/interface/lonsimplepage.pm 2008/12/17 09:44:04 1.62
+++ loncom/interface/lonsimplepage.pm 2011/05/03 21:38:40 1.98
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Simple Page Editor
#
-# $Id: lonsimplepage.pm,v 1.62 2008/12/17 09:44:04 ehlerst Exp $
+# $Id: lonsimplepage.pm,v 1.98 2011/05/03 21:38:40 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -39,6 +39,7 @@ use Apache::lonlocal;
use Apache::lonprintout;
use Apache::lonxml;
use Apache::longroup;
+use Apache::lonnavmaps();
use HTML::Entities();
use LONCAPA;
@@ -51,10 +52,10 @@ sub get_db_name {
my $db_name;
if ($dom && $crs && ($udom eq $dom) && ($uname eq $crs)) {
- $marker =~ s/\W//g;
- $db_name = 'grppage_'.$marker;
+ $marker =~ s/\W//g;
+ $db_name = 'grppage_'.$marker;
} else {
- $marker=~s/\D//g;
+ $marker=~s/\D//g;
$db_name = 'smppage_'.$marker;
}
return if (!defined($marker));
@@ -70,17 +71,17 @@ sub handler {
my $target=$env{'form.grade_target'};
# ------------------------------------------------------------ Print the screen
if ($target eq 'tex') {
- $r->print(&Apache::lonprintout::print_latex_header($env{'form.latex_type'}));
- }
+ $r->print(&Apache::lonprintout::print_latex_header($env{'form.latex_type'}));
+ }
# Is this even in a course?
unless ($env{'request.course.id'}) {
- if ($target ne 'tex') {
- &Apache::loncommon::simple_error_page($r,'','Not in a course');
- } else {
- $r->print('\textbf{Not in a course}\end{document}');
- }
- return OK;
+ if ($target ne 'tex') {
+ &Apache::loncommon::simple_error_page($r,'','Not in a course');
+ } else {
+ $r->print('\textbf{Not in a course}\end{document}');
+ }
+ return OK;
}
my $db_name = &get_db_name($r->uri);
@@ -93,26 +94,26 @@ sub handler {
my %groupinfo = ();
if ($db_name =~ /^grppage_/) {
$group = (split(m{/},$r->uri))[4];
- $group =~ s/\W//g;
+ $group =~ s/\W//g;
my %curr_groups = &Apache::longroup::coursegroups($dom,$crs,$group);
if (!%curr_groups) {
- &Apache::loncommon::simple_error_page($r,'','Invalid group name');
- return OK;
+ &Apache::loncommon::simple_error_page($r,'','Invalid group name');
+ return OK;
}
- %groupinfo =
- &Apache::longroup::get_group_settings($curr_groups{$group});
+ %groupinfo =
+ &Apache::longroup::get_group_settings($curr_groups{$group});
$group_desc = &unescape($groupinfo{'description'});
}
if (!$db_name) {
- &Apache::loncommon::simple_error_page($r,'','Invalid call');
- return OK;
+ &Apache::loncommon::simple_error_page($r,'','Invalid call');
+ return OK;
}
# --------------------------------------------------------- The syllabus fields
my %syllabusfields=&Apache::lonlocal::texthash(
'aaa_title' => 'Page Title',
- 'bbb_content' => 'Content',
+ 'bbb_content' => ($target eq 'tex'?'':'Content'),
'ccc_webreferences' => 'Web References');
if ($group ne '') {
$syllabusfields{'abb_links'} = &mt('Available Group Tools');
@@ -133,23 +134,23 @@ sub handler {
if ($env{'form.ref'}) {
$refarg = '&ref='.$env{'form.ref'};
}
-
+
my %syllabus=&Apache::lonnet::dump($db_name,$dom,$crs);
-
+
# --------------------------------------- There is such a user, get environment
if ($target ne 'tex') {
- my $title = 'Course Page';
+ my $title = 'Simple Course Page';
if ($group ne '') {
- $title = 'Group Page';
+ $title = 'Simple Group Page';
}
- my $start_page =
- &Apache::loncommon::start_page($title,undef,
- {'function' => $forcestudent,
- 'domain' => $dom,
- 'force_register' =>
- $env{'form.register'},});
- $r->print($start_page);
+ my $start_page =
+ &Apache::loncommon::start_page($title,undef,
+ {'function' => $forcestudent,
+ 'domain' => $dom,
+ 'force_register' =>
+ $env{'form.register'},});
+ $r->print($start_page);
}
if ($group ne '') {
@@ -163,12 +164,13 @@ sub handler {
$env{'request.course.id'}.'/'.$group);
$group_home_edit = &Apache::lonnet::allowed('mgh',
$env{'request.course.id'}.'/'.$group);
- if ($group_view_perm || $group_edit_perm || $group_home_view ||
+ if ($group_view_perm || $group_edit_perm || $group_home_view ||
$group_home_edit || &Apache::longroup::check_group_access($group)) {
- if (($env{'form.ref'} eq 'grouplist') && ($target ne 'tex')) {
+ if (($env{'form.ref'} eq 'grouplist') && ($target ne 'tex') &&
+ (!$env{'form.register'})) {
$r->print(&grouppage_breadcrumbs($dom,$crs,$group,$group_desc));
}
- if ((!$group_home_edit) && (!$group_home_view) &&
+ if ((!$group_home_edit) && (!$group_home_view) &&
(!$group_view_perm) && (!$group_edit_perm)) {
&display_group_links($r,$target,$group,'view',$refarg,%groupinfo);
if ($env{'form.grade_target'} ne 'tex') {
@@ -179,17 +181,17 @@ sub handler {
return OK;
}
} else {
- my $msg =
- &mt('You do not currently have rights to view this group.');
+ my $msg =
+ &mt('You do not currently have rights to view this group.');
if ($target ne 'tex') {
- $r->print("
$msg
".
- &Apache::loncommon::end_page());
+ $r->print(''.$msg.'
'.
+ &Apache::loncommon::end_page());
} else {
$r->print('\textbf{'.$msg.'}\end{document}');
}
- return OK;
+ return OK;
}
- my ($blocked,$blocktext) =
+ my ($blocked,$blocktext) =
&Apache::loncommon::blocking_status('groups');
if ($blocked) {
$r->print($blocktext);
@@ -199,200 +201,218 @@ sub handler {
}
my $allowed;
-
+
if ($group ne '') {
$allowed = $group_edit_perm;
if (!$allowed) {
- $allowed = $group_home_edit;
+ $allowed = $group_home_edit;
}
- } else {
+ } else {
$allowed=&Apache::lonnet::allowed('mdc',$env{'request.course.id'});
}
my $privileged=$allowed;
if (($syllabus{'uploaded.lastmodified'}) && (!$forceedit)) {
- $forcestudent='student';
+ $forcestudent='student';
}
if ($forcestudent or $target eq 'tex') { $allowed=0; }
- if ($allowed) {
- $r->print(''.''
- .''.&mt('Show Student View').' '.
- &Apache::loncommon::help_open_topic('Uploaded_Templates_PublicView').
- &Apache::loncommon::help_open_topic('Uploaded_Templates_TextBoxes',&mt('Help with filling in text boxes'))
- .'
');
- } elsif ($privileged and $target ne 'tex') {
- my $edittext = &mt('Edit');
- if ($group ne '') {
- $edittext = &mt('Edit Group Homepage');
- }
- $r->print(''.$edittext.' ');
- if ($group ne '') {
- if ($group_edit_perm) {
- $r->print(' '.
- ''.
- &mt('Edit Group Settings').' ');
- }
- }
- }
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'});
- }
+ ($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 ($group ne '') {
$syllabus{'uploaded.photourl'}=&Apache::lonnet::userfileupload(
- 'uploaddoc',1,"grouppage/$group");
+ 'uploaddoc','coursedoc',"grouppage/$group");
} else {
- $syllabus{'uploaded.photourl'}=
- &Apache::lonnet::userfileupload('uploaddoc',1,'simplepage');
+ $syllabus{'uploaded.photourl'}=
+ &Apache::lonnet::userfileupload('uploaddoc','coursedoc','simplepage');
}
- }
- $syllabus{'uploaded.lastmodified'}=time;
- &Apache::lonnet::put($db_name,\%syllabus,$dom,$crs);
- }
- if ($allowed && $env{'form.delupl'}) {
- if ($syllabus{'uploaded.photourl'}) {
- &Apache::lonnet::removeuploadedurl($syllabus{'uploaded.photourl'});
- delete($syllabus{'uploaded.photourl'});
- &Apache::lonnet::del('simplepage',['uploaded.photourl']);
}
+ $syllabus{'uploaded.lastmodified'}=time;
+ &Apache::lonnet::put($db_name,\%syllabus,$dom,$crs);
}
+# if ($allowed && $env{'form.delupl'}) {
+# if ($syllabus{'uploaded.photourl'}) {
+# &Apache::lonnet::removeuploadedurl($syllabus{'uploaded.photourl'});
+# delete($syllabus{'uploaded.photourl'});
+# &Apache::lonnet::del('simplepage',['uploaded.photourl']);
+# }
+# }
if (($allowed) && ($env{'form.storesyl'})) {
- foreach my $syl_field (keys(%syllabusfields)) {
- my $field=$env{'form.'.$syl_field};
- chomp($field);
- $field=~s/\s+$//s;
- $field=~s/^\s+//s;
- $field=~s/\ $//s;
- $field=&Apache::lonfeedback::clear_out_html($field,1);
- $syllabus{$syl_field}=$field;
- }
- $syllabus{'uploaded.lastmodified'}=time;
- &Apache::lonnet::put($db_name,\%syllabus,$dom,$crs);
+ foreach my $syl_field (keys(%syllabusfields)) {
+ my $field=$env{'form.'.$syl_field};
+ chomp($field);
+ $field=~s/\s+$//s;
+ $field=~s/^\s+//s;
+ $field=~s/\ $//s;
+ $field=&Apache::lonfeedback::clear_out_html($field,1);
+ $syllabus{$syl_field}=$field;
+ }
+ $syllabus{'uploaded.lastmodified'}=time;
+ &Apache::lonnet::put($db_name,\%syllabus,$dom,$crs);
+ }
+
+#---Print Function
+ if ($target ne 'tex') {
+ if ($allowed || $privileged) {
+ my $functions=&Apache::lonhtmlcommon::start_funclist();
+ my $url = $r->uri;
+ if ($group ne '') {
+ my $navmap=Apache::lonnavmaps::navmap->new();
+ if (ref($navmap)) {
+ $url = &Apache::longroup::get_group_link($dom,$crs,$group,$navmap);
+ }
+ }
+ if ($allowed) {
+ $url .= (($url=~/\?/)?'&':'?').'forcestudent=1';
+ $functions.=&Apache::lonhtmlcommon::add_item_funclist(
+ ''
+ .&mt('Show Student View').' '
+ .&Apache::loncommon::help_open_topic(
+ 'Uploaded_Templates_PublicView'));
+ } elsif ($privileged) {
+ my $edittext = &mt('Edit');
+ $url .= (($url=~/\?/)?'&':'?').'forceedit=edit'.$refarg;
+ if ($group ne '') {
+ $edittext = &mt('Edit Group Homepage');
+ }
+ $functions.=&Apache::lonhtmlcommon::add_item_funclist(
+ ''
+ .$edittext.' ');
+ if ($group ne '') {
+ if ($group_edit_perm) {
+ $functions.=&Apache::lonhtmlcommon::add_item_funclist(
+ ''
+ .&mt('Edit Group Settings')
+ .' ');
+ }
+ }
+ }
+ $functions.=&Apache::lonhtmlcommon::end_funclist();
+ $r->print(&Apache::loncommon::head_subbox($functions));
+ }
+ }
+
+#---Print help Text
+ if($target ne 'tex'){
+ if ($allowed) {
+ $r->print(&Apache::loncommon::help_open_topic('Uploaded_Templates_TextBoxes',&mt('Help with filling in text boxes')));
+ }
}
# ---------------------------------------------------------------- Get syllabus
- if ((($syllabus{'uploaded.lastmodified'}) &&
- (($group ne '' && ($group_home_view || $group_edit_perm ||
+ if ((($syllabus{'uploaded.lastmodified'}) &&
+ (($group ne '' && ($group_home_view || $group_edit_perm ||
$group_view_perm)) || ($group eq ''))) || ($allowed)) {
- my $image;
- if ($syllabus{'uploaded.photourl'}) {
- &Apache::lonnet::allowuploaded('/adm/smppg',
- $syllabus{'uploaded.photourl'});
-
- $image=' ';
- if ($target eq 'tex') {
- $image=&Apache::lonxml::xmlparse($r,'tex',$image);
- }
- }
- if ($allowed) {
- $r->print(
- '');
- }
- &Apache::lontemplate::start_columnSection($r);
- if($allowed){
- $r->print($image.'
');
- }
- &Apache::lontemplate::start_ContentBox($r,$allowed);
- foreach my $field (sort(keys(%syllabusfields))) {
- if (($syllabus{$field}) || ($allowed) ||
- ($field eq 'abb_links' && $group ne '')) {
- my $message=$syllabus{$field};
- &Apache::lonfeedback::newline_to_br(\$message);
- $message
- =~s/(https*\:\/\/[^\s]+)/\\$1\<\/tt\>\<\/a\>/g;
- if ($allowed) {
- $message=&Apache::lonspeller::markeduptext($message);
- }
- if ($target ne 'tex') {
- $message=&Apache::lontexconvert::msgtexconverted($message);
- }
- if ($field eq 'abb_links' && $group ne '') {
- $r->print(' ');
- &display_group_links($r,$target,$group,'edit',$refarg,
- %groupinfo);
- $r->print(' ');
- } elsif ($field eq 'aaa_title') {
- if ($target ne 'tex') {
- if($allowed){
- $r->print(' ');
- }
- $r->print('
'.$message.' ');
- } else {
- my $safeinit;
- $r->print(&Apache::lonxml::xmlparse($r,'tex',''.$message.' '));
- }
- if ($allowed) {
- if ($env{'form.grade_target'} ne 'tex') {
- $r->print(''.&mt('Title').' ');
- &Apache::lontemplate::print_editbox_template($r,$syllabus{$field},$field);
- $r->print('');
- } else {
- my $safeinit;
- $r->print(&Apache::lonxml::xmlparse($r,'tex',$syllabus{$field},$safeinit));
- }
- }
- } else {
- if ($target ne 'tex') {
- if($allowed){
- $r->print('');
- }
- &Apache::lontemplate::print_template($r,$syllabusfields{$field},$message,$allowed);
- } else {
- my $safeinit;
- $r->print(&Apache::lonxml::xmlparse($r,'tex','
'.$syllabusfields{$field}.' '));
- $r->print(&Apache::lonxml::xmlparse($r,'tex',$message));
- }
- if ($allowed) {
- if ($target ne 'tex') {
- &Apache::lontemplate::print_editbox_template($r,$syllabus{$field},$field);
- $r->print('');
- } else {
- my $safeinit;
- $r->print(&Apache::lonxml::xmlparse($r,'tex',$syllabus{$field},$safeinit));
+ #Print the title
+ my $titletext=&HTML::Entities::encode($syllabus{'aaa_title'},'<>&"');
+ if ($target ne 'tex') {
+ if ($allowed) {
+ }
+ $r->print(''.$titletext.' ');
+ } else {
+ my $safeinit;
+ $r->print(&Apache::lonxml::xmlparse($r,'tex',''.$titletext.' '));
+ }
+ if ($allowed) {
+ if ($env{'form.grade_target'} ne 'tex') {
+ #editbox for title
+ $r->print('');
- }
- if ($env{'form.grade_target'} ne 'tex') {$r->print('');}
+ };
+ my $title_handler = sub {};
+ my %custom_handlers = (
+ 'abb_links' => $links_handler,
+ 'aaa_title' => $title_handler
+ );
+ &Apache::lontemplate::print_template_fields($r, \%syllabus, \%syllabusfields,
+ $target, $allowed, Apache::lontemplate->RICH_TEXT_DETECT_HTML, \%custom_handlers, $group);
+
+ if ($allowed && ($env{'form.grade_target'} ne 'tex')) {
+ $r->print(&Apache::lonhtmlcommon::htmlareaselectactive().
+ '');
+ }
+
} else {
if ($group ne '') {
&display_group_links($r,$target,$group,'view',$refarg,%groupinfo);
} else {
- $r->print(&mt('No page information provided.
'));
+ my $text=&mt('No page information provided.');
+ if ($target ne 'tex') {
+ $r->print(''.$text.'
');
+ } else {
+ $r->print($text)
+ }
}
}
if ($env{'form.grade_target'} ne 'tex') {
- $r->print(&Apache::loncommon::end_page());
+ $r->print(&Apache::loncommon::end_page());
} else {
- $r->print('\end{document}');
+ $r->print('\end{document}');
}
return OK;
}
@@ -411,11 +431,11 @@ sub display_group_links {
href => '/adm/groupboards?group='.$group.$refarg,
);
%{$menu{'chat'}} = (
- text => 'Group Chat',
+ text => 'Group Chat Room',
href => "javascript:group_chat('$group')",
);
%{$menu{'files'}} = (
- text => 'File Repository',
+ text => 'Group Portfolio',
href => '/adm/coursegrp_portfolio?group='.$group.
$refarg,
);
@@ -429,16 +449,27 @@ sub display_group_links {
}
}
if (@available > 0) {
- my $output = ' ';
+ my $output = '';
+ if ($target eq 'tex') {
+ $output = '';
+ } else {
+ $output = &Apache::loncommon::start_data_table();
+ }
foreach my $tool (@available) {
if ($target eq 'tex') {
- $output .= ''.&mt($menu{$tool}{text}).' ';
+ $output .= ''.&mt($menu{$tool}{text}).' ';
} else {
- $output .= ''.
- &mt($menu{$tool}{text}).' ';
+ $output .= &Apache::loncommon::start_data_table_row()
+ .''
+ .&mt($menu{$tool}{text}).' '
+ .&Apache::loncommon::end_data_table_row();
}
}
- $output .= '
';
+ if ($target eq 'tex') {
+ $output .= '
';
+ } else {
+ $output .= &Apache::loncommon::end_data_table();
+ }
if ($target eq 'tex') {
$r->print(&Apache::lonxml::xmlparse($r,'tex',&mt('Available functions').' '.$output));
} else {
@@ -448,8 +479,8 @@ sub display_group_links {
my $output;
if ($context eq 'edit') {
$output = &mt('No group functionality.');
- } else {
- $output = &mt('No group functionality (e.g., e-mail, discussion, chat or file upload) is currently available to you in this group: [_1].',''.&unescape($groupinfo{'description'}).' ');
+ } else {
+ $output = &mt('No group functionality (e.g., e-mail, discussion, chat room or file upload) is currently available to you in this group: [_1].',''.&unescape($groupinfo{'description'}).' ');
}
if ($target eq 'tex') {
$r->print(&Apache::lonxml::xmlparse($r,'tex',$output));
@@ -467,7 +498,7 @@ sub grouppage_breadcrumbs {
text=>"Groups",
title=>"Display Groups"},
{href=>"/adm/$cdom/$cnum/$group/smppg?ref=grouplist",
- text=>"Group: $description",
+ text=>&mt('Group:')." $description",
title=>"Go to group's home page"},
);
my $output .= &Apache::lonhtmlcommon::breadcrumbs(&mt('Group page - [_1]',