version 1.22, 2014/05/31 16:01:33
|
version 1.27, 2018/04/14 02:29:44
|
Line 94 my $foldersOption;
|
Line 94 my $foldersOption;
|
sub getWishlist { |
sub getWishlist { |
my @keys = &Apache::lonnet::getkeys('wishlist'); |
my @keys = &Apache::lonnet::getkeys('wishlist'); |
my %wishlist = &Apache::lonnet::get('wishlist',\@keys); |
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 |
#File not found. This appears at the first time using the wishlist |
#Create file and put 'root' into it |
#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::logthis($i.'! Create file by putting in the "root" of the directory tree.'); |
&Apache::lonnet::put('wishlist', {'root' => ''}); |
&Apache::lonnet::put('wishlist', {'root' => ''}); |
my $options = '<option value="" selected="selected">('.&mt('Top level').')</option>'; |
my $options = '<option value="" selected="selected">('.&mt('Top level').')</option>'; |
Line 113 sub getWishlist {
|
Line 113 sub getWishlist {
|
|
|
# if we got no keys in hash returned by get(), return error. |
# 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 |
# 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!'); |
&Apache::lonnet::logthis('ERROR while attempting to get wishlist: no keys retrieved!'); |
return 'error'; |
return 'error'; |
} |
} |
Line 536 sub JSforWishlist {
|
Line 536 sub JSforWishlist {
|
' Paths to LON-CAPA resources must be of the form /res/domain/user/...'. |
' Paths to LON-CAPA resources must be of the form /res/domain/user/...'. |
' Paths to external websites must contain the network protocol, e.g. http://...'); |
' Paths to external websites must contain the network protocol, e.g. http://...'); |
my $warningLinkNotAllowed2 = &mt('The following link is not allowed:').' '; |
my $warningLinkNotAllowed2 = &mt('The following link is not allowed:').' '; |
my $warningLink = &mt('You must insert a title and a path!'); |
|
my $warningFolder = &mt('You must insert a title!'); |
|
my $warningDelete = &mt('Are you sure you want to delete the selected entries? Deleting a folder also deletes all entries within this folder!'); |
my $warningDelete = &mt('Are you sure you want to delete the selected entries? Deleting a folder also deletes all entries within this folder!'); |
my $warningSave = &mt('You have unsaved changes. You can either save these changes now by clicking "OK" or click "Cancel" if you do not want to save your changes.'); |
my $warningSave = &mt('You have unsaved changes. You can either save these changes now by clicking "OK" or click "Cancel" if you do not want to save your changes.'); |
my $warningMoveS = &mt('You must select at minimum one entry to move!'); |
my $warningMoveS = &mt('You must select at minimum one entry to move!'); |
my $warningMoveD = &mt('You must select a destination folder!'); |
my $warningMoveD = &mt('You must select a destination folder!'); |
|
&js_escape(\$warningLinkNotAllowed1); |
|
&js_escape(\$warningLinkNotAllowed2); |
|
&js_escape(\$warningDelete); |
|
&js_escape(\$warningSave); |
|
&js_escape(\$warningMoveS); |
|
&js_escape(\$warningMoveD); |
$foldersOption = ''; |
$foldersOption = ''; |
|
|
my $js = &Apache::lonhtmlcommon::scripttag(<<JAVASCRIPT); |
my $js = &Apache::lonhtmlcommon::scripttag(<<JAVASCRIPT); |
Line 1131 sub wishlistView {
|
Line 1135 sub wishlistView {
|
} |
} |
# entry is a link |
# entry is a link |
else { |
else { |
|
my $quotable_link = &Apache::loncommon::escape_single($n->value()->path()); |
$wishlistHTMLview .= '<td id="padd'.$index.'" style="padding-left:'.(($indent_view-$indentConst)<=0?$indentConst:$indent_view).'px; min-width: 220px;">'. |
$wishlistHTMLview .= '<td id="padd'.$index.'" style="padding-left:'.(($indent_view-$indentConst)<=0?$indentConst:$indent_view).'px; min-width: 220px;">'. |
'<a href="javascript:preview('."'".$n->value()->path()."'".');">'. |
'<a href="javascript:preview('."'".$quotable_link."'".');">'. |
'<img src="/res/adm/pages/wishlist-link.png" id="img'.$index.'" alt="link" />'. |
'<img src="/res/adm/pages/wishlist-link.png" id="img'.$index.'" alt="link" />'. |
$n->value()->title().'</a></td>'; |
$n->value()->title().'</a></td>'; |
} |
} |
Line 1305 sub wishlistMove {
|
Line 1310 sub wishlistMove {
|
$highlight = 'style="color:red;"'; |
$highlight = 'style="color:red;"'; |
} |
} |
# link-image and title |
# link-image and title |
|
my $quotable_link = &Apache::loncommon::escape_single($n->value()->path()); |
$wishlistHTMLmove .= '<td></td>'. |
$wishlistHTMLmove .= '<td></td>'. |
'<td id="padd'.$index.'" style="padding-left:'.(($indent_move-$indentConst)<=0?$indentConst:$indent_move).'px; min-width: 220px;">'. |
'<td id="padd'.$index.'" style="padding-left:'.(($indent_move-$indentConst)<=0?$indentConst:$indent_move).'px; min-width: 220px;">'. |
'<a href="javascript:preview('."'".$n->value()->path()."'".');" '.$highlight.'>'. |
'<a href="javascript:preview('."'".$quotable_link."'".');" '.$highlight.'>'. |
'<img src="/res/adm/pages/wishlist-link.png" id="img'.$index.'" alt="link"/>'. |
'<img src="/res/adm/pages/wishlist-link.png" id="img'.$index.'" alt="link"/>'. |
$n->value()->title().'</a></td>'; |
$n->value()->title().'</a></td>'; |
} |
} |
Line 1425 sub wishlistImport {
|
Line 1431 sub wishlistImport {
|
else { |
else { |
$wishlistHTMLimport .= '<td id="padd'.$index.'" style="padding-left:'.(($indent_imp-$indentConst)<=0?$indentConst:$indent_imp).'px; min-width: 220px;">'; |
$wishlistHTMLimport .= '<td id="padd'.$index.'" style="padding-left:'.(($indent_imp-$indentConst)<=0?$indentConst:$indent_imp).'px; min-width: 220px;">'; |
unless ($nopick{$n->value()->path()}) { |
unless ($nopick{$n->value()->path()}) { |
$wishlistHTMLimport .= '<a href="javascript:preview('."'".$n->value()->path()."'".');">'; |
my $quotable_link = &Apache::loncommon::escape_single($n->value()->path()); |
|
$wishlistHTMLimport .= '<a href="javascript:preview('."'".$quotable_link."'".');">'; |
} |
} |
$wishlistHTMLimport .= '<img src="/res/adm/pages/'.$image.'" id="img'.$index.'" alt="link" />'. |
$wishlistHTMLimport .= '<img src="/res/adm/pages/'.$image.'" id="img'.$index.'" alt="link" />'. |
'<span '.$style.'>'.$n->value()->title().'</span></a></td>'; |
'<span '.$style.'>'.$n->value()->title().'</span></a></td>'; |
Line 1473 sub makePage {
|
Line 1480 sub makePage {
|
$root = $rootgiven; |
$root = $rootgiven; |
@childrenRt = $root->children(); |
@childrenRt = $root->children(); |
|
|
|
my $windowname = 'loncapaclient'; |
|
if ($env{'request.lti.login'}) { |
|
$windowname .= 'lti'; |
|
} |
|
|
# breadcrumbs and start_page |
# breadcrumbs and start_page |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::add_breadcrumb( |
&Apache::lonhtmlcommon::add_breadcrumb( |
Line 1481 sub makePage {
|
Line 1493 sub makePage {
|
my $startPage = &Apache::loncommon::start_page('Stored Links',undef, |
my $startPage = &Apache::loncommon::start_page('Stored Links',undef, |
{'add_entries' => { |
{'add_entries' => { |
'onload' => 'javascript:onLoadAction('."'".$mode."'".');', |
'onload' => 'javascript:onLoadAction('."'".$mode."'".');', |
'onunload' => 'javascript:window.name = '."'loncapaclient'"}}); |
'onunload' => 'javascript:window.name = '."'$windowname'"}}); |
|
|
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs(&mt('Stored Links'),'Wishlist'); |
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Stored Links','Wishlist'); |
|
|
# get javascript-code for wishlist-interactions |
# get javascript-code for wishlist-interactions |
my $js = &JSforWishlist(); |
my $js = &JSforWishlist(); |
Line 1658 sub makePopUpNewLink {
|
Line 1670 sub makePopUpNewLink {
|
' or to external websites.'. |
' or to external websites.'. |
' Paths to LON-CAPA resources must be of the form /res/domain/user/...'. |
' Paths to LON-CAPA resources must be of the form /res/domain/user/...'. |
' Paths to external websites must contain the network protocol, e.g. http://...'); |
' Paths to external websites must contain the network protocol, e.g. http://...'); |
|
&js_escape(\$warningLink); |
|
&js_escape(\$warningLinkNotAllowed1); |
|
|
my $inPageWishlistlink1 = '<h1>'.&mt('Save to Stored Links').'</h1>'; |
my $inPageWishlistlink1 = '<h1>'.&mt('Save to Stored Links').'</h1>'; |
# If no title is delivered, 'New Link' is called up from the wishlist-interface, so after |
# If no title is delivered, 'New Link' is called up from the wishlist-interface, so after |
Line 1761 sub makePopUpNewFolder {
|
Line 1775 sub makePopUpNewFolder {
|
'bgcolor' => '#FFFFFF',}); |
'bgcolor' => '#FFFFFF',}); |
|
|
my $warningFolder = &mt('You must insert a title!'); |
my $warningFolder = &mt('You must insert a title!'); |
|
&js_escape(\$warningFolder); |
|
|
my $inPageNewFolder = '<h1>'.&mt('New Folder').'</h1>'. |
my $inPageNewFolder = '<h1>'.&mt('New Folder').'</h1>'. |
'<form method="post" name="newfolder" action="/adm/wishlist" target="wishlist" '. |
'<form method="post" name="newfolder" action="/adm/wishlist" target="wishlist" '. |
Line 1869 sub makePageImport {
|
Line 1883 sub makePageImport {
|
#FIXME Saved string containing all folders in wishlist.db-file (key 'folders') in first version of lonwishlist |
#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 |
#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 |
#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; |
my $fnum; |
if (defined $wishlist{'folders'}) { |
if (defined $wishlist{'folders'}) { |
$fnum = (keys %wishlist)-2; |
$fnum = (keys(%wishlist))-2; |
} |
} |
else { |
else { |
$fnum = (keys %wishlist)-1; |
$fnum = (keys(%wishlist))-1; |
} |
} |
|
|
$inner .= '<form method="post" name="groupsort" action="">'. |
$inner .= '<form method="post" name="groupsort" action="">'. |
Line 2125 sub HashToTree {
|
Line 2139 sub HashToTree {
|
my @TreeNodes = (); |
my @TreeNodes = (); |
my $root; |
my $root; |
|
|
foreach my $key (keys %$TreeHash) { |
foreach my $key (keys(%$TreeHash)) { |
if ($key eq 'root') { |
if ($key eq 'root') { |
$root = Tree->new("root"); |
$root = Tree->new("root"); |
} |
} |