--- loncom/interface/londocs.pm 2009/07/14 17:33:43 1.381
+++ loncom/interface/londocs.pm 2009/10/30 19:50:24 1.406
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Documents
#
-# $Id: londocs.pm,v 1.381 2009/07/14 17:33:43 bisitz Exp $
+# $Id: londocs.pm,v 1.406 2009/10/30 19:50:24 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -35,6 +35,7 @@ use Apache::Constants qw(:common :http);
use Apache::imsexport;
use Apache::lonnet;
use Apache::loncommon;
+use Apache::lonhtmlcommon;
use LONCAPA::map();
use Apache::lonratedt();
use Apache::lonxml;
@@ -119,8 +120,8 @@ sub dumpbutton {
my $type = &Apache::loncommon::course_type();
if ($home+$other==0) { return ''; }
if ($home) {
- return ' '.
+ my $link = "".&mt('Dump '.$type.' DOCS to Construction Space')." ";
+ return $link.' '.
&Apache::loncommon::help_open_topic('Docs_Dump_Course_Docs').' ';
} else {
return '
'.
@@ -262,9 +263,7 @@ sub dumpcourse {
sub exportbutton {
my $type = &Apache::loncommon::course_type();
- return '
'.
+ return "
".&mt('IMS Export')." ".
&Apache::loncommon::help_open_topic('Docs_Export_Course_Docs').'
';
}
@@ -999,7 +998,7 @@ sub group_import {
}
sub breadcrumbs {
- my ($where,$allowed,$type)=@_;
+ my ($allowed,$type)=@_;
&Apache::lonhtmlcommon::clear_breadcrumbs();
my (@folders);
if ($env{'form.pagepath'}) {
@@ -1014,6 +1013,15 @@ sub breadcrumbs {
my $isencrypted=0;
my $ishidden=0;
my $is_random_order=0;
+ if (!$allowed) {
+ my $description = $env{'course.'.$env{'request.course.id'}.'.description'};
+ &Apache::lonhtmlcommon::add_breadcrumb(
+ {'href' => '/adm/menu',
+ 'title'=> 'Go to main menu',
+ 'text' => $description,
+ });
+ $plain .= $description.' >';
+ }
while (@folders) {
my $folder=shift(@folders);
my $foldername=shift(@folders);
@@ -1033,11 +1041,7 @@ sub breadcrumbs {
if ($3) { $isencrypted=1; }
if ($4 ne '') { $is_random_order = 1; }
if ($folder eq 'supplemental') {
- if ($allowed) {
- $name = &mt('Supplemental '.$type.' Documents');
- } else {
- $name = &mt($type.' Documents');
- }
+ $name = &mt('Supplemental '.$type.' Documents');
}
&Apache::lonhtmlcommon::add_breadcrumb(
{'href'=>$url.$cpinfo,
@@ -1494,7 +1498,6 @@ sub handle_edit_cmd {
sub editor {
my ($r,$coursenum,$coursedom,$folder,$allowed,$upload_output,$type)=@_;
-
my $container= ($env{'form.pagepath'}) ? 'page'
: 'sequence';
@@ -1509,9 +1512,14 @@ sub editor {
$LONCAPA::map::resources[$idx]='';
}
- my ($breadcrumbtrail,$randompick,$ishidden,$isencrypted,$plain,$is_random_order)=
- &breadcrumbs($folder,$allowed,$type);
- $r->print($breadcrumbtrail);
+ my ($breadcrumbtrail,$randompick,$ishidden,$isencrypted,$plain,$is_random_order);
+ if ($allowed) {
+ ($breadcrumbtrail,$randompick,$ishidden,$isencrypted,$plain,$is_random_order) =
+ &breadcrumbs($allowed,$type);
+ $r->print($breadcrumbtrail);
+ } else {
+ $randompick = -1;
+ }
# ------------------------------------------------------------ Process commands
@@ -1633,16 +1641,20 @@ sub editor {
$shown++;
}
if ($shown) {
- $r->print(&Apache::loncommon::start_data_table()
- .&Apache::loncommon::start_data_table_header_row()
- .'
'.&mt('Move').' '
- .'
'.&mt('Actions').' '
- .'
'.&mt('Document').' '
- .'
'.&mt('Settings').' '
- .&Apache::loncommon::end_data_table_header_row()
- .$output
- .&Apache::loncommon::end_data_table()
- )
+ $r->print(&Apache::loncommon::start_data_table());
+ if ($allowed) {
+ $r->print(&Apache::loncommon::start_data_table_header_row()
+ .'
'.&mt('Move').' '
+ .'
'.&mt('Actions').' '
+ .'
'.&mt('Document').' ');
+ if ($folder !~ /^supplemental/) {
+ $->print('
'.&mt('Settings').' ');
+ }
+ $r->print(&Apache::loncommon::end_data_table_header_row());
+ }
+ $r->print($output
+ .&Apache::loncommon::end_data_table()
+ );
} else {
$r->print('
'
.&mt('Currently no documents.')
@@ -1719,7 +1731,7 @@ sub process_file_upload {
return 'failed';
} else {
if ($parseaction eq 'parse') {
- my $total_embedded = keys(%{$allfiles});
+ my $total_embedded = scalar(keys(%{$allfiles}));
if ($total_embedded > 0) {
my $num = 0;
my $state = '
@@ -1793,7 +1805,6 @@ sub parse_supplemental_title {
sub entryline {
my ($index,$title,$url,$folder,$allowed,$residx,$coursenum)=@_;
-
my ($foldertitle,$pagetitle,$renametitle);
if (&is_supplemental_title($title)) {
($title,$foldertitle,$renametitle) = &parse_supplemental_title($title);
@@ -2050,7 +2061,7 @@ END
$url.='pagepath='.&escape($pagepath).
'&pagesymb='.&escape($symb).$cpinfo;
}
- if ($external) {
+ if (($external) && ($allowed)) {
my $form = ($folder =~ /^default/)? 'newext' : 'supnewext';
$external = ' '.&mt('Edit').' ';
} else {
@@ -2571,7 +2582,7 @@ sub init_breadcrumbs {
my ($form,$text)=@_;
&Apache::lonhtmlcommon::clear_breadcrumbs();
&Apache::lonhtmlcommon::add_breadcrumb({href=>"/adm/coursedocs",
- text=>"Edit ".&Apache::loncommon::course_type(),
+ text=>&Apache::loncommon::course_type().' Editor',
faq=>273,
bug=>'Instructor Interface',
help => 'Docs_Adding_Course_Doc'});
@@ -2687,7 +2698,9 @@ sub handler {
if ($r->uri=~/^\/adm\/coursedocs\/showdoc\/(.*)$/) {
$showdoc='/'.$1;
}
- unless ($showdoc) { # got called from remote
+ if ($showdoc) { # got called in sequence from course
+ $allowed=0;
+ } else {
if (($env{'form.folder'}=~/^(?:group|default)_/) ||
($env{'form.folder'} =~ m:^\d+/(pages|sequences)/:)) {
$forcestandard = 1;
@@ -2698,10 +2711,28 @@ sub handler {
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['cmd']);
$script=&Apache::lonratedt::editscript('simple');
}
- } else { # got called in sequence from course
- $allowed=0;
}
+# subroutine to list form elements
+sub create_list_elements {
+ my @formarr = @_;
+ my $list = '';
+ for my $button (@formarr){
+ for my $picture(keys %$button) {
+ #my $link = Apache::lonhtmlcommon::htmltag('a' ,$button->{$picture}, {href => "test"});
+ $list .= Apache::lonhtmlcommon::htmltag('li', $picture.' '.$button->{$picture}, {class => 'LC_menubuttons_inline_text'});
+ }
+ }
+ return $list;
+}
+
+# subroutine to create ul from list elements
+sub create_form_ul {
+ my $list = shift;
+ my $ul = Apache::lonhtmlcommon::htmltag('ul',$list, {class => 'LC_ListStyleNormal'});
+ return $ul;
+}
+
# get course data
my $coursenum=$env{'course.'.$env{'request.course.id'}.'.num'};
my $coursedom=$env{'course.'.$env{'request.course.id'}.'.domain'};
@@ -2724,11 +2755,33 @@ sub handler {
.$script."\n"
.'// ]]>'."\n"
.''."\n";
- my $brcrum = [{href=>"/adm/createuser",text=>"$type Documents"}];
- $r->print(&Apache::loncommon::start_page("$type Documents", $script,
- {'force_register' => $showdoc,
- 'bread_crumbs' => $brcrum}).
- &Apache::loncommon::help_open_menu('','',273,'RAT'));
+
+ # Breadcrumbs
+ &Apache::lonhtmlcommon::clear_breadcrumbs();
+ if ($allowed) {
+ &Apache::lonhtmlcommon::add_breadcrumb({
+ href=>"/adm/coursedocs",text=>"$type Editor"});
+
+ $r->print(&Apache::loncommon::start_page("$type Editor", $script,
+ {'force_register' => $showdoc,})
+ .&Apache::loncommon::help_open_menu('','',273,'RAT')
+ .&Apache::lonhtmlcommon::breadcrumbs(
+ 'Editing the Table of Contents for your '.$type,
+ 'Docs_Adding_Course_Doc')
+ );
+ } elsif ($showdoc) {
+ $r->print(&Apache::loncommon::start_page("$type documents",undef,
+ {'force_register' => $showdoc,}));
+ } else {
+ my $folder=$env{'form.folder'};
+ if ($folder eq '' || $folder eq 'supplemental') {
+ $env{'form.folderpath'} = 'supplemental&'.
+ &escape(&mt('Supplemental '.$type.' Documents'));
+ }
+ my ($breadcrumbtrail) = &breadcrumbs($allowed,$type);
+ $r->print(&Apache::loncommon::start_page("Supplemental documents").
+ $breadcrumbtrail);
+ }
my %allfiles = ();
my %codebase = ();
@@ -2850,7 +2903,7 @@ sub handler {
'file' => 'File',
'title' => 'Title',
'comment' => 'Comment',
- 'parse' => 'Upload embedded images/multimedia files if HTML file!',
+ 'parse' => 'Upload embedded images/multimedia files if HTML file',
'nd' => 'Upload Document',
'pm' => 'Published Map',
'sd' => 'Special Document',
@@ -2871,6 +2924,7 @@ FIUP
CHBO
+ my $fileuploada = " $help{'Uploading_From_Harddrive'}";
my $fileuploadform=(<
@@ -2884,27 +2938,25 @@ CHBO
$checkbox
-
-
-
-
- $help{'Uploading_From_Harddrive'}
-
+FUFORM
+ #$list .= Apache::lonhtmlcommon::htmltag('li', $picture.' '.$button->{$picture}, {class => 'LC_menubuttons_inline_text'});
+ #$fileuploadform .= create_form_ul(create_list_elements(@fileuploada));
+ $fileuploadform .= create_form_ul(Apache::lonhtmlcommon::htmltag('li',$fileuploada,{class => 'LC_menubuttons_inline_text'}));
+ $fileuploadform .= (<
FUFORM
my $simpleeditdefaultform=(<
- $uploadtag
-
-
-
-
- $help{'Importing_LON-CAPA_Resource'}
-
-
-
+SEDFFORM
+ my @simpleeditdefaultforma = (
+ { ' ' => "$uploadtag$lt{'srch'} " },
+ { ' ' => "$lt{'impo'} $help{'Importing_LON-CAPA_Resource'}" },
+ { ' ' => "$lt{'book'} " },
+ );
+ $simpleeditdefaultform .= create_form_ul(create_list_elements(@simpleeditdefaultforma));
+ $simpleeditdefaultform .=(<
$lt{'copm'}
@@ -2921,10 +2973,7 @@ SEDFFORM
ERFORM
@@ -2964,32 +3013,39 @@ ERFORM
HIDDENFORM
}
# --------------------------------------------------------- Main tab structure
+
my $activeClass = 1;
my $active = '';
- $r->print('');
- if (($standard) && ($allowed) && (!$forcesupplement) && (($env{'form.folderpath'}=~/^default/) || $env{'form.folderpath'}eq"" || ($env{'form.pagepath'}))) {
- if($activeClass == 1){
- $active = 'class="active"';
- $activeClass = 0;
- }
- }
- $r->print(''.&mt('Main Course Documents').' ');
- $active = '';
- if (!$forcestandard || ($env{'form.folderpath'}=~/^supplemental/)) {
- if($activeClass == 1){
- $active = 'class="active"';
- }
- }
- $r->print(''.&mt('Supplemental Course Documents').' ');
- $r->print(' '
- .''
+
+ if ($allowed) {
+ $r->print('
');
+ if (($standard) && ($allowed) && (!$forcesupplement) && (($env{'form.folderpath'}=~/^default/) || $env{'form.folderpath'}eq"" || ($env{'form.pagepath'}))) {
+ if($activeClass == 1){
+ $active = 'class="active"';
+ $activeClass = 0;
+ }
+ }
+ $r->print(''.&mt('Main Course Documents').' ');
+ $active = '';
+ if (!$forcestandard || ($env{'form.folderpath'}=~/^supplemental/)) {
+ if($activeClass == 1){
+ $active = 'class="active"';
+ }
+ }
+ $r->print(''.&mt('Supplemental Course Documents').' ');
+ $r->print(' ');
+ } else {
+ $r->print('
');
+ }
+ $r->print('
'
.'
');
# --------------------------------------------------------- Standard documents
my $savefolderpath;
- my $active = 'style="display: none;"';
+ $active = 'style="display: none;"';
if($activeClass == 0){
$active = 'style="display: block;"';
}
+ if ($allowed) {
$r->print('
');
my $folder=$env{'form.folder'};
if ($folder eq '' || $folder=~/^supplemental/) {
@@ -3024,14 +3080,14 @@ HIDDENFORM
my $recoverform=(<
-
+ $lt{'reco'}
RFORM
my $imspform=(<
-
+ $lt{'imsf'}
IMSPFORM
@@ -3041,10 +3097,8 @@ IMSPFORM
$uploadtag
-
-
+ $lt{'navc'}
$help{'Navigate_Content'}
-
NNFORM
my $newsmppageform=(<
$uploadtag
-
- $help{'Simple Page'}
-
+ $lt{'sipa'}
+ $help{'Simple Page'}
NSPFORM
@@ -3064,10 +3116,8 @@ NSPFORM
$uploadtag
-
- $help{'Simple Problem'}
-
+ $lt{'sipr'}
+ $help{'Simple Problem'}
NSPROBFORM
@@ -3077,10 +3127,7 @@ NSPROBFORM
$uploadtag
-
-
-
+ $lt{'drbx'}
NDBFORM
@@ -3089,11 +3136,8 @@ NDBFORM
$uploadtag
-
-
+ $lt{'scuf'}
$help{'Score_Upload_Form'}
-
NEXUFORM
@@ -3102,11 +3146,8 @@ NEXUFORM
$uploadtag
-
-
+ $lt{'bull'}
$help{'Bulletin Board'}
-
NBFORM
@@ -3116,10 +3157,8 @@ NBFORM
$uploadtag
-
-
+ $lt{'mypi'}
$help{'My Personal Information Page'}
-
NAMFORM
@@ -3128,10 +3167,7 @@ NAMFORM
$uploadtag
-
-
-
+ $lt{'abou'}
NASOFORM
@@ -3142,42 +3178,36 @@ NASOFORM
$uploadtag
-
-
+ $lt{'rost'}
$help{'Course Roster'}
-
NROSTFORM
my $specialdocumentsform;
+my @specialdocumentsforma;
my $newfolderform;
+my $newfolderb;
unless ($env{'form.pagepath'}) {
my $path = &HTML::Entities::encode($env{'form.folderpath'},'<>&"');
-
+
my $newpageform=(<
-
- $help{'Adding_Pages'}
-
+ $lt{'newp'}
+ $help{'Adding_Pages'}
NPFORM
+
$newfolderform=(<
-
- $help{'Adding_Folders'}
-
+ $lt{'newf'} $help{'Adding_Folders'}
NFFORM
@@ -3187,10 +3217,9 @@ NFFORM
$uploadtag
-
-
+ $lt{'syll'}
$help{'Syllabus'}
-
+
NSYLFORM
@@ -3200,34 +3229,52 @@ NSYLFORM
$uploadtag
-
-
+ $lt{'grpo'}
$help{'Group Portfolio'}
-
NGFFORM
-
- $specialdocumentsform=" $newpageform $newsylform $newgroupfileform";
+ @specialdocumentsforma=(
+ {' '=>$newpageform},
+ {' '=>$newsylform},
+ {' '=>$newgroupfileform},
+ );
+
}
- $specialdocumentsform.=" $newnavform $newsmppageform
- $newsmpproblemform $newdropboxform
- $newexuploadform $newbulform
- $newaboutmeform $newaboutsomeoneform
- $newrosterform";
+ push @specialdocumentsforma, ({' '=>$newnavform},
+ {' '=>$newsmppageform},
+ {' '=>$newsmpproblemform},
+ {' '=>$newdropboxform},
+ {' '=>$newexuploadform},
+ {' '=>$newbulform},
+ {' '=>$newaboutmeform},
+ {' '=>$newaboutsomeoneform},
+ {' '=>$newrosterform},);
+
+ $specialdocumentsform = create_form_ul(create_list_elements(@specialdocumentsforma));
+
if($env{'form.pagepath'}) {
- $specialdocumentsform=" $newsmpproblemform $newexuploadform";
+
+ @specialdocumentsforma=(
+ {' '=>$newsmpproblemform},
+ {' '=>$newexuploadform}
+ );
+ $specialdocumentsform= create_form_ul(create_list_elements(@specialdocumentsforma));
}
+my @tools = (
+ {' '=>$extresourcesform},
+ {' '=>$imspform},
+ {' '=>$recoverform},
+ );
+
my %orderhash = (
- 'aa' => ['Upload Document',$fileuploadform.' '.$newfolderform],
+ '00' => ['Newfolder',$newfolderform],
+ 'aa' => ['Upload Document',$fileuploadform],
'bb' => ['Published Resources',$simpleeditdefaultform],
'cc' => ['Special Documents',$specialdocumentsform],
- 'dd' => ['Tools',$extresourcesform.' '.$imspform.' '.$recoverform.' '.&generate_admin_options($containertag,$uploadtag,\%help,\%env)],
- 'zz' => ['Hide'],
+ 'dd' => ['Tools', create_form_ul(create_list_elements(@tools)).&generate_admin_options($containertag,$uploadtag,\%help,\%env)],
);
my $tid='1';
-my $varcd = 'Main Course Documents';
-$r->print(&generate_edit_table($tid,$varcd,\%orderhash));
$hadchanges=0;
my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$type);
if ($error) {
@@ -3238,13 +3285,14 @@ $r->print(&generate_edit_table($tid,$var
}
&changewarning($r,'');
- $r->print(&Apache::loncommon::help_open_topic('Docs_Adding_Course_Doc',
- &mt('Editing the Table of Contents for your '.$type)));
+$r->print(&generate_edit_table($tid,\%orderhash));
+
$r->print(' ');
+ }
if ($env{'form.pagepath'}) {
}
# ----------------------------------------------------- Supplemental documents
- my $active = 'style="display: none;"';
+ $active = 'style="display: none;"';
if($activeClass == 1){
$active = 'style="display: block;"';
}
@@ -3257,7 +3305,7 @@ $r->print('
');
(($env{'form.folderpath'} =~ /^default\&/) || ($env{'form.folderpath'} eq ''))) {
$env{'form.folderpath'} = 'supplemental&'.
&escape(&mt('Supplemental '.$type.' Documents'));
- }else{
+ } elsif ($allowed) {
$env{'form.folderpath'} = $savefolderpath;
}
$env{'form.pagepath'} = '';
@@ -3268,8 +3316,9 @@ $r->print('
');
my $path = &HTML::Entities::encode($env{'form.folderpath'},'<>&"');
+ my $supupdocformbtn = "
$help{'Uploading_From_Harddrive'}";
my $supupdocform=(<
+ ');
$lt{'comment'}:
-
+
-
-
- $help{'Uploading_From_Harddrive'}
-
-
SUPDOCFORM
+ $supupdocform .= create_form_ul(Apache::lonhtmlcommon::htmltag('li',$supupdocformbtn,{class => 'LC_menubuttons_inline_text'}))."";
my $supnewfolderform=(<
-
- $help{'Adding_Folders'}
-
+ $lt{'newf'}
+ $help{'Adding_Folders'}
SNFFORM
-
+
my $supnewextform=(<
-
- $help{'Adding_External_Resource'}
-
+ $lt{'extr'} $help{'Adding_External_Resource'}
SNEFORM
@@ -3324,45 +3361,52 @@ SNEFORM
-
-
+ $lt{'syll'}
$help{'Syllabus'}
-
SNSFORM
my $supnewaboutmeform=(<
+
SNAMFORM
-
+my @specialdocs = (
+ {' '=>$supnewextform},
+ {' '=>$supnewsylform},
+ {' '=>$supnewaboutmeform},
+ );
my %suporderhash = (
- 'ee' => ['Upload Document',$supupdocform.' '.$supnewfolderform],
- 'ff' => ['Special Documents',$supnewextform.' '.$supnewsylform.' '.$supnewaboutmeform],
- 'zz' => ['Hide'],
+ '00' => ['Supnewfolder', $supnewfolderform],
+ 'ee' => ['Upload Document',$supupdocform],
+ 'ff' => ['Special Documents',create_form_ul(create_list_elements(@specialdocs))]
);
-my $tid='2';
-my $varscd = 'Supplemental Course Documents';
+ my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$type);
+ if ($error) {
+ $r->print(''.$error.'
');
+ }
+ my $tid='2';
+ $r->print(&generate_edit_table($tid,\%suporderhash));
+ } else {
+ my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$type);
+ if ($error) {
+ $r->print(''.$error.'
');
+ }
+ }
+
-$r->print(&generate_edit_table($tid,$varscd,\%suporderhash));
-my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$type);
- if ($error) {
- $r->print(''.$error.'
');
- }
-$r->print('
');
- }
$r->print('');
+$r->print('');
+
+
if ($allowed) {
$r->print('