--- loncom/interface/londocs.pm 2022/10/27 21:35:30 1.686
+++ loncom/interface/londocs.pm 2022/12/31 14:08:59 1.690
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Documents
#
-# $Id: londocs.pm,v 1.686 2022/10/27 21:35:30 raeburn Exp $
+# $Id: londocs.pm,v 1.690 2022/12/31 14:08:59 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -205,7 +205,7 @@ sub validate_supppath {
$backto .= '&'.$items[$i];
my $is_hidden;
unless ($got_supp) {
- my ($supplemental) = &Apache::lonnet::get_supplemental($coursenum,$coursedom);
+ my ($supplemental) = &Apache::loncommon::get_supplemental($coursenum,$coursedom);
if (ref($supplemental) eq 'HASH') {
if (ref($supplemental->{'hidden'}) eq 'HASH') {
%supphidden = %{$supplemental->{'hidden'}};
@@ -3562,7 +3562,7 @@ sub editor {
}
if ((!$allowed) && ($folder =~ /^supplemental_\d+$/)) {
- my ($supplemental) = &Apache::lonnet::get_supplemental($coursenum,$coursedom);
+ my ($supplemental) = &Apache::loncommon::get_supplemental($coursenum,$coursedom);
if (ref($supplemental) eq 'HASH') {
if ((ref($supplemental->{'hidden'}) eq 'HASH') &&
(ref($supplemental->{'ids'}) eq 'HASH')) {
@@ -3992,11 +3992,13 @@ sub entryline {
my ($index,$title,$url,$folder,$allowed,$residx,$coursenum,$coursedom,
$crstype,$pathitem,$supplementalflag,$container,$filtersref,$currgroups,
$ltitoolsref,$canedit,$isencrypted,$ishidden,$navmapref,$hostname)=@_;
- my ($foldertitle,$renametitle,$oldtitle);
+ my ($foldertitle,$renametitle,$oldtitle,$encodedtitle);
if (&is_supplemental_title($title)) {
($title,$foldertitle,$renametitle) = &Apache::loncommon::parse_supplemental_title($title);
+ $encodedtitle=$title;
} else {
$title=&HTML::Entities::encode($title,'"<>&\'');
+ $encodedtitle=$title;
$renametitle=$title;
$foldertitle=$title;
}
@@ -4483,7 +4485,7 @@ $form_end;
$url .= ($url =~ /\?/) ? '&':'?';
$url .= 'folderpath='.&HTML::Entities::encode($esc_path,'<>&"');
if ($title) {
- $url .= '&title='.&HTML::Entities::encode($renametitle,'<>&"');
+ $url .= '&title='.$encodedtitle;
}
if ((($isexternal) || ($isexttool)) && $orderidx) {
$url .= '&idx='.$orderidx;
@@ -5784,7 +5786,7 @@ sub handler {
}
# If allowed and user's role is not advanced check folderpath is not hidden
my $hidden_and_empty;
- if (($allowed) && (!$env{'request.role.adv'}) && ($env{'form.folderpath'} ne '')) {
+ if (($allowed) && (!$env{'request.role.adv'}) && ($env{'form.folderpath'} ne '')) {
my ($folderurl,$foldername,$hiddenfolder);
my @pathitems = split(/\&/,$env{'form.folderpath'});
my $folder = $pathitems[-2];
@@ -5800,7 +5802,7 @@ sub handler {
if ($supplementalflag) {
($foldername,$hiddenfolder) = ($pathitems[-1] =~ /^([^:]*)::(|1):::$/);
$foldername = &HTML::Entities::decode(&unescape($foldername));
- my ($supplemental) = &Apache::lonnet::get_supplemental($coursenum,$coursedom);
+ my ($supplemental) = &Apache::loncommon::get_supplemental($coursenum,$coursedom);
if (ref($supplemental) eq 'HASH') {
my ($suppmap,$suppmapnum);
if ($folder eq 'supplemental') {
@@ -5989,7 +5991,8 @@ sub handler {
if ($showdoc) {
my $args;
if ($supplementalflag) {
- my $brcrum = &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$env{'form.title'},1);
+ my $title = &HTML::Entities::encode($env{'form.title'},'\'"<>&');
+ my $brcrum = &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$title,1);
$args = {'bread_crumbs' => $brcrum};
} else {
$args = {'force_register' => $showdoc};
@@ -6132,6 +6135,7 @@ sub handler {
'stpr' => 'Standard Problem',
'news' => 'New sub-directory',
'crpr' => 'Create Problem',
+ 'swit' => 'Switch Server',
'drbx' => 'Drop Box',
'scuf' => 'External Scores (handgrade, upload, clicker)',
'bull' => 'Discussion Board',
@@ -6290,12 +6294,12 @@ FUFORM
SEDFFORM
my $importcrsresform;
my ($numdirs,$pickfile) =
- &Apache::loncommon::import_crsauthor_form('crsresimportform','coursepath','coursefile',
+ &Apache::loncommon::import_crsauthor_form('coursepath','coursefile',
"resize_scrollbox('contentscroll','1','0');",
undef,'res');
if ($pickfile) {
$importcrsresform=(<
-
+
CRSFORM
@@ -6326,7 +6330,7 @@ CRSFORM
{ '
' => $importpubform },
);
if ($pickfile) {
- push(@importpubforma,{ '
' => $importcrsresform});
+ push(@importpubforma,{ '
' => $importcrsresform});
}
$importpubform = &create_form_ul(&create_list_elements(@importpubforma));
my $extresourcesform =
@@ -6528,35 +6532,39 @@ NROSTFORM
NWEBFORM
my @ids=&Apache::lonnet::current_machine_ids();
- my %select_menus;
+ my (%select_menus,$rolehomes);
my $numauthor = 0;
my $numcrsdirs = 0;
+ my ($showstdprob,$showswitch,$switchlink);
my $toppath = "/priv/$env{'user.domain'}/$env{'user.name'}";
+ my $exclude = &Apache::lonnet::priv_exclude();
if ($env{'user.author'}) {
$numauthor ++;
$select_menus{'author'}->{'text'} = &Apache::lonnet::plaintext('au');
if (grep(/^\Q$env{'user.home'}\E$/,@ids)) {
my $is_home = 1;
my %subdirs;
- &Apache::lonnet::recursedirs($is_home,'priv',$londocroot,$toppath,'',\%subdirs);
+ &Apache::lonnet::recursedirs($is_home,1,'',$exclude,0,$toppath,'',\%subdirs);
$select_menus{'author'}->{'default'} = '/';
- $select_menus{'author'}->{'select2'}->{'/'} = '/';
- my @ordered = ('/');
+ my @ordered = ();
foreach my $relpath (sort { lc($a) cmp lc($b) } (keys(%subdirs))) {
$select_menus{'author'}->{'select2'}->{$relpath} = $relpath;
push(@ordered,$relpath);
}
$select_menus{'author'}->{'order'} = \@ordered;
+ $showstdprob = 'block';
} else {
+ $rolehomes = ''."\n";
$select_menus{'author'}->{'select2'}->{'switch'} = &mt('Switch server required');
$select_menus{'author'}->{'default'} = 'switch';
$select_menus{'author'}->{'order'} = ['switch'];
+ $showstdprob = 'none';
}
}
my %roleshash = &Apache::lonnet::get_my_roles($env{'user.name'},$env{'user.domain'},'userroles',
['active'],['ca','aa']);
my $crshome = $env{'course.'.$env{'request.course.id'}.'.home'};
- my %by_roletype;
+ my (%by_roletype,%at_home);
if (keys(%roleshash)) {
foreach my $entry (keys(%roleshash)) {
my ($auname,$audom,$roletype) = split(/:/,$entry);
@@ -6566,19 +6574,19 @@ NWEBFORM
$select_menus{$key}->{'text'} = &Apache::lonnet::plaintext($roletype)." ($audom/$auname)";
my $rolehome = &Apache::lonnet::homeserver($auname,$audom);
if (grep(/^\Q$rolehome\E$/,@ids)) {
+ $at_home{$auname.'___'.$audom} = 1;
my $is_home = 1;
my (%subdirs,@ordered);
my $toppath="/priv/$audom/$auname";
- &Apache::lonnet::recursedirs($is_home,'priv',$londocroot,$toppath,'',\%subdirs);
+ &Apache::lonnet::recursedirs($is_home,1,'',$exclude,0,$toppath,'',\%subdirs);
$select_menus{$key}->{'default'} = '/';
- $select_menus{$key}->{'select2'}->{'/'} = '/';
- my @ordered = ('/');
foreach my $relpath (sort { lc($a) cmp lc($b) } (keys(%subdirs))) {
$select_menus{$key}->{'select2'}->{$relpath} = $relpath;
push(@ordered,$relpath);
}
$select_menus{$key}->{'order'} = \@ordered;
} else {
+ $rolehomes .= ''."\n";
$select_menus{$key}->{'select2'}->{'switch'} = &mt('Switch server required');
$select_menus{$key}->{'default'} = 'switch';
$select_menus{$key}->{'order'} = ['switch'];
@@ -6600,6 +6608,11 @@ NWEBFORM
foreach my $author (sort { lc($a) cmp lc($b) } (keys(%{$by_roletype{$possrole}}))) {
unless ($defrole) {
$defrole = $author;
+ if ($at_home{$author}) {
+ $showstdprob = 'block';
+ } else {
+ $showstdprob = 'none';
+ }
}
push(@order,$author.'___'.$possrole);
}
@@ -6611,17 +6624,17 @@ NWEBFORM
my $is_home = 1;
my %subdirs;
my $toppath="/priv/$coursedom/$coursenum";
- &Apache::lonnet::recursedirs($is_home,'priv',$londocroot,$toppath,'',\%subdirs);
+ &Apache::lonnet::recursedirs($is_home,1,'',$exclude,0,$toppath,'',\%subdirs);
$numcrsdirs = keys(%subdirs);
$select_menus{'course'}->{'default'} = '/';
- $select_menus{'course'}->{'select2'}->{'/'} = '/';
- my @ordered = ('/');
+ my @ordered = ();
foreach my $relpath (sort { lc($a) cmp lc($b) } (keys(%subdirs))) {
$select_menus{'course'}->{'select2'}->{$relpath} = $relpath;
push(@ordered,$relpath);
}
$select_menus{'course'}->{'order'} = \@ordered;
} else {
+ $rolehomes .= ''."\n";
$select_menus{'course'}->{'select2'}->{'switch'} = &mt('Switch server required');
$select_menus{'course'}->{'default'} = 'switch';
$select_menus{'course'}->{'order'} = ['switch'];
@@ -6638,13 +6651,14 @@ NWEBFORM
$showtitle = 'inline';
if (grep(/^\Q$crshome\E$/,@ids)) {
$is_home = 1;
+ $showstdprob = 'block';
$pickdir .= '';
my $toppath="/priv/$coursedom/$coursenum'}";
my %subdirs;
- &Apache::lonnet::recursedirs($is_home,'priv',$londocroot,$toppath,'',\%subdirs);
+ &Apache::lonnet::recursedirs($is_home,1,'',$exclude,0,$toppath,'',\%subdirs);
$numcrsdirs = keys(%subdirs);
if ($numcrsdirs) {
- $pickdir .= &mt('Directory: ').'