--- loncom/interface/lonwishlist.pm 2013/04/10 22:12:43 1.17
+++ loncom/interface/lonwishlist.pm 2014/12/20 15:35:40 1.24
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Utility-routines for wishlist
#
-# $Id: lonwishlist.pm,v 1.17 2013/04/10 22:12:43 raeburn Exp $
+# $Id: lonwishlist.pm,v 1.24 2014/12/20 15:35:40 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -94,10 +94,10 @@ my $foldersOption;
sub getWishlist {
my @keys = &Apache::lonnet::getkeys('wishlist');
my %wishlist = &Apache::lonnet::get('wishlist',\@keys);
- foreach my $i ( keys %wishlist) {
+ foreach my $i (keys(%wishlist)) {
#File not found. This appears at the first time using the wishlist
#Create file and put 'root' into it
- if ($i =~m/^error:No such file/) {
+ if ($i =~m/^\Qerror:No such file\E/) {
&Apache::lonnet::logthis($i.'! Create file by putting in the "root" of the directory tree.');
&Apache::lonnet::put('wishlist', {'root' => ''});
my $options = '';
@@ -113,7 +113,7 @@ sub getWishlist {
# if we got no keys in hash returned by get(), return error.
# wishlist will not be loaded, instead the user will be asked to try again later
- if ((keys %wishlist) == 0) {
+ if ((keys(%wishlist)) == 0) {
&Apache::lonnet::logthis('ERROR while attempting to get wishlist: no keys retrieved!');
return 'error';
}
@@ -197,7 +197,7 @@ sub newEntry() {
my $date = gmtime();
# Create Entry-Object
my $entry = Entry->new(title => $title, path => $path, note => $note, date => $date);
- # Create Tree-Object, this correspones a node in the wishlist-tree
+ # Create Tree-Object, this corresponds a node in the wishlist-tree
my $tree = Tree->new($entry);
# Add this node to wishlist-tree
my $folderIndex = $env{'form.folders'};
@@ -1042,6 +1042,12 @@ sub JSforImport{
function finish_import() {
opener.document.forms.simpleedit.importdetail.value='';
for (var num = 0; num < document.forms.groupsort.fnum.value; num++) {
+ try {
+ eval("document.forms.groupsort.filelink"+num+".value");
+ }
+ catch(err) {
+ continue;
+ }
if (eval("document.forms.groupsort.check"+num+".checked") && eval("document.forms.groupsort.filelink"+num+".value") != '') {
opener.document.forms.simpleedit.importdetail.value+='&'+
eval("document.forms.groupsort.title"+num+".value")+'='+
@@ -1125,8 +1131,9 @@ sub wishlistView {
}
# entry is a link
else {
+ my $quotable_link = &Apache::loncommon::escape_single($n->value()->path());
$wishlistHTMLview .= '
';
}
@@ -1355,16 +1363,30 @@ sub wishlistImport {
foreach my $n (@$nodes) {
my $index = $n->value()->nindex();
+
+ #
+ # Determine which resources in stored links may be imported into a course/community.
+ # (a) Import of directories in /res space is not supported.
+ # (b) Import of a resource into a community requires user has 'bro' privilege for resource
+ # (i.e., user has author or co-author role for corresponcding Authoring Space).
+ # (c) Import of a resource into a course requires user has 'be' privilege for resource.
+ #
+
if ($n->value()->path() =~ m{^(/res/$match_domain/$match_username/)}) {
- if ($is_community) {
- unless (&Apache::lonnet::allowed('bro',$n->value()->path())) {
- $nopick{$n->value()->path()} = $n->value()->title();
- $$numskipped ++;
- }
+ if ($n->value()->path() =~ m{/$}) {
+ $nopick{$n->value()->path()} = $n->value()->title();
+ $$numskipped ++;
} else {
- unless (&Apache::lonnet::allowed('bre',$n->value()->path())) {
- $nopick{$n->value()->path()} = $n->value()->title();
- $$numskipped ++;
+ if ($is_community) {
+ unless (&Apache::lonnet::allowed('bro',$n->value()->path())) {
+ $nopick{$n->value()->path()} = $n->value()->title();
+ $$numskipped ++;
+ }
+ } else {
+ unless (&Apache::lonnet::allowed('bre',$n->value()->path())) {
+ $nopick{$n->value()->path()} = $n->value()->title();
+ $$numskipped ++;
+ }
}
}
}
@@ -1405,7 +1427,8 @@ sub wishlistImport {
else {
$wishlistHTMLimport .= '
';
@@ -1463,7 +1486,7 @@ sub makePage {
'onload' => 'javascript:onLoadAction('."'".$mode."'".');',
'onunload' => 'javascript:window.name = '."'loncapaclient'"}});
- my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs(&mt('Stored Links').&Apache::loncommon::help_open_topic('Wishlist'));
+ my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs(&mt('Stored Links'),'Wishlist');
# get javascript-code for wishlist-interactions
my $js = &JSforWishlist();
@@ -1786,25 +1809,28 @@ SCRIPT
# Returns the HTML-Markup for the page, shown when a link was set
sub makePageSet {
- # start_page
- my $startPage = &Apache::loncommon::start_page('Stored Links',undef,
- {'only_body' => 1});
+ my $title = 'Stored Links';
+
+ # start_page
+ my $output =
+ &Apache::loncommon::start_page($title,undef,
+ {'only_body' => 1})
+ .'
'.&mt($title).'
';
# confirm success and offer link to wishlist
- my $message = &Apache::lonhtmlcommon::confirm_success(&mt('Link successfully saved!'));
- $message = &Apache::loncommon::confirmwrapper($message);
-
- my $inner .= ' '.$message.'
'.
- ''.&mt('Go to Stored Links').''.(' ' x 3).
- ''.&mt('Close this window').'';
+ $output .=
+ &Apache::loncommon::confirmwrapper(
+ &Apache::lonhtmlcommon::confirm_success(
+ &mt('Link successfully saved!')))
+ .&Apache::lonhtmlcommon::actionbox(
+ [''.&mt('Go to Stored Links').'',
+ ''.&mt('Close this window').''
+ ]);
# end_page
- my $endPage = &Apache::loncommon::end_page();
-
- # put all page-elements together
- my $page = $startPage.$inner.$endPage;
+ $output .= &Apache::loncommon::end_page();
- return $page;
+ return $output;
}
@@ -1846,13 +1872,13 @@ sub makePageImport {
#FIXME Saved string containing all folders in wishlist.db-file (key 'folders') in first version of lonwishlist
#After splitting lonwishlist into two modules, this is not necessary anymore. So, dependent from when the wishlist
#was first called (i.e. when wishlist.db was created), there might be an entry 'folders' or not. Number of links in
- #wishlist.db depends on wether this entry exists or not...JW
+ #wishlist.db depends on whether this entry exists or not...JW
my $fnum;
if (defined $wishlist{'folders'}) {
- $fnum = (keys %wishlist)-2;
+ $fnum = (keys(%wishlist))-2;
}
else {
- $fnum = (keys %wishlist)-1;
+ $fnum = (keys(%wishlist))-1;
}
$inner .= '