--- loncom/interface/londocs.pm 2016/08/08 13:37:42 1.484.2.65
+++ loncom/interface/londocs.pm 2020/09/09 02:08:15 1.484.2.90
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Documents
#
-# $Id: londocs.pm,v 1.484.2.65 2016/08/08 13:37:42 raeburn Exp $
+# $Id: londocs.pm,v 1.484.2.90 2020/09/09 02:08:15 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -139,7 +139,43 @@ sub clean {
return $title;
}
-
+sub default_folderpath {
+ my ($coursenum,$coursedom,$navmapref) = @_;
+ return unless ($coursenum && $coursedom && ref($navmapref));
+# Check if entire course is hidden and/or encrypted
+ my ($hiddenmap,$encryptmap,$folderpath,$hiddentop);
+ my $toplevel = "uploaded/$coursedom/$coursenum/default.sequence";
+ unless (ref($$navmapref)) {
+ $$navmapref = Apache::lonnavmaps::navmap->new();
+ }
+ if (ref($$navmapref)) {
+ if (lc($$navmapref->get_mapparam(undef,$toplevel,"0.hiddenresource")) eq 'yes') {
+ my $filterFunc = sub { my $res = shift; return (!$res->randomout() && !$res->is_map()) };
+ my @resources = $$navmapref->retrieveResources($toplevel,$filterFunc,1,1);
+ unless (@resources) {
+ $hiddenmap = 1;
+ unless ($env{'request.role.adv'}) {
+ $hiddentop = 1;
+ if ($env{'form.folder'}) {
+ undef($env{'form.folder'});
+ }
+ }
+ }
+ }
+ if (lc($$navmapref->get_mapparam(undef,$toplevel,"0.encrypturl")) eq 'yes') {
+ $encryptmap = 1;
+ }
+ }
+ unless ($hiddentop) {
+ $folderpath='default&'.&escape(&mt('Main Content')).
+ '::'.$hiddenmap.':'.$encryptmap.'::';
+ }
+ if (wantarray) {
+ return ($folderpath,$hiddentop);
+ } else {
+ return $folderpath;
+ }
+}
sub dumpcourse {
my ($r) = @_;
@@ -791,12 +827,14 @@ sub log_docs {
}
sub docs_change_log {
- my ($r,$coursenum,$coursedom,$folder,$allowed,$crstype,$iconpath)=@_;
+ my ($r,$coursenum,$coursedom,$folder,$allowed,$crstype,$iconpath,$canedit)=@_;
my $supplementalflag=($env{'form.folderpath'}=~/^supplemental/);
+ my $navmap;
my $js = ''."\n";
+ .''."\n"
+ .''."\n";
# Breadcrumbs
&Apache::lonhtmlcommon::clear_breadcrumbs();
@@ -4784,34 +5383,52 @@ sub handler {
$r->print(&Apache::loncommon::start_page("$crstype documents",undef,
{'force_register' => $showdoc,}));
} elsif ($toolsflag) {
+ my ($breadtext,$breadtitle);
+ $breadtext = "$crstype Editor";
+ if ($canedit) {
+ $breadtitle = 'Editing '.$crstype.' Contents';
+ } else {
+ $breadtext .= ' (View-only mode)';
+ $breadtitle = 'Viewing '.$crstype.' Contents';
+ }
&Apache::lonhtmlcommon::add_breadcrumb({
- href=>"/adm/coursedocs",text=>"$crstype Contents"});
+ href=>"/adm/coursedocs",text=>$breadtext});
$r->print(&Apache::loncommon::start_page("$crstype Contents", $script)
.&Apache::loncommon::help_open_menu('','',273,'RAT')
.&Apache::lonhtmlcommon::breadcrumbs(
- 'Editing Course Contents')
+ $breadtitle)
);
} elsif ($r->uri eq '/adm/supplemental') {
my $brcrum = &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype);
$r->print(&Apache::loncommon::start_page("Supplemental $crstype Content",undef,
{'bread_crumbs' => $brcrum,}));
} else {
+ my ($breadtext,$breadtitle,$helpitem);
+ $breadtext = "$crstype Editor";
+ if ($canedit) {
+ $breadtitle = 'Editing '.$crstype.' Contents';
+ $helpitem = 'Docs_Adding_Course_Doc';
+ } else {
+ $breadtext .= ' (View-only mode)';
+ $breadtitle = 'Viewing '.$crstype.' Contents';
+ $helpitem = 'Docs_Viewing_Course_Doc';
+ }
&Apache::lonhtmlcommon::add_breadcrumb({
- href=>"/adm/coursedocs",text=>"$crstype Contents"});
+ href=>"/adm/coursedocs",text=>$breadtext});
$r->print(&Apache::loncommon::start_page("$crstype Contents", $script,
{'add_entries' => $addentries}
)
.&Apache::loncommon::help_open_menu('','',273,'RAT')
.&Apache::lonhtmlcommon::breadcrumbs(
- 'Editing '.$crstype.' Contents',
- 'Docs_Adding_Course_Doc')
+ $breadtitle,
+ $helpitem)
);
}
my %allfiles = ();
my %codebase = ();
my ($upload_result,$upload_output,$uploadphase);
- if ($allowed) {
+ if ($canedit) {
if (($env{'form.uploaddoc.filename'}) &&
($env{'form.cmd'}=~/^upload_(\w+)/)) {
my $context = $1;
@@ -4819,6 +5436,7 @@ sub handler {
undef($hadchanges);
$uploadphase = &process_file_upload(\$upload_output,$coursenum,$coursedom,
\%allfiles,\%codebase,$context,$crstype);
+ undef($navmap);
if ($hadchanges) {
&mark_hash_old();
}
@@ -4863,7 +5481,7 @@ sub handler {
if ($allowed && $toolsflag) {
$r->print(&startContentScreen('tools'));
- $r->print(&generate_admin_menu($crstype));
+ $r->print(&generate_admin_menu($crstype,$canedit));
$r->print(&endContentScreen());
} elsif ((!$showdoc) && (!$uploadphase)) {
# -----------------------------------------------------------------------------
@@ -4903,9 +5521,11 @@ sub handler {
'bb6' => 'Blackboard 6',
'angel5' => 'ANGEL 5.5',
'webctce4' => 'WebCT 4 Campus Edition',
+ 'er' => 'Editing rights unavailable for your current role.',
);
# -----------------------------------------------------------------------------
- # Calculate free quota space for a user or course.
+ # Calculate free quota space for a user or course. A javascript function checks
+ # file size to determine if upload should be allowed.
my $quotatype = 'unofficial';
if ($crstype eq 'Community') {
$quotatype = 'community';
@@ -4928,7 +5548,7 @@ sub handler {
if ($disk_quota == 0) {
$percent = 100.0;
} else {
- $percent = 100*($current_disk_usage/$disk_quota);
+ $percent = 100*($usage/$disk_quota);
}
$usage = sprintf("%.2f",$usage);
$quota = sprintf("%.2f",$quota);
@@ -4939,7 +5559,8 @@ sub handler {
my $fileupload=(<
$lt{'cms'}: -
- + IMSFORM @@ -4989,7 +5610,7 @@ IMSFORM $fileupload'.$error.'
'); } if ($hadchanges) { - &mark_hash_old(); + unless (&is_hash_old()) { + &mark_hash_old(); + } } &changewarning($r,''); @@ -5380,7 +6029,8 @@ SNFFORM my $supextform = &Apache::lonextresedit::extedit_form(1,0,undef,undef,$pathitem, - $help{'Adding_External_Resource'}); + $help{'Adding_External_Resource'}, + undef,undef,$disabled); my $supnewsylform=(<'.$error.'
'); } else { @@ -5468,7 +6119,7 @@ my %suporderhash = ( } } elsif ($supplementalflag) { my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype, - $supplementalflag,'',$iconpath,$pathitem); + $supplementalflag,'',$iconpath,$pathitem,'',$hostname); if ($error) { $r->print(''.$error.'
'); } @@ -5502,6 +6153,7 @@ my %suporderhash = ( sub embedded_form_elems { my ($phase,$primaryurl,$newidx) = @_; my $folderpath = &HTML::Entities::encode($env{'form.folderpath'},'<>&"'); + $newidx =~s /\D+//g; return <