--- loncom/interface/lonwishlist.pm 2012/05/14 16:39:41 1.11
+++ loncom/interface/lonwishlist.pm 2012/08/01 19:07:51 1.16
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Utility-routines for wishlist
#
-# $Id: lonwishlist.pm,v 1.11 2012/05/14 16:39:41 raeburn Exp $
+# $Id: lonwishlist.pm,v 1.16 2012/08/01 19:07:51 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -50,7 +50,7 @@ use Apache::lonnet;
use Apache::loncommon();
use Apache::lonhtmlcommon;
use Apache::lonlocal;
-use LONCAPA;
+use LONCAPA qw(:DEFAULT :match);
use Tree;
@@ -466,11 +466,13 @@ sub getNodesToArray {
Recursive call starting with all children of the root of the tree (parameter nodes is reference to an array containing the nodes of the current level).
-=item * &wishlistImport(nodes)
+=item * &wishlistImport(nodes, numskipped)
Returns the table-HTML-markup for the wishlist in mode "import".
- Recursive call starting with all children of the root of the tree (parameter nodes is reference to an array containing the nodes of the current level).
-
+ Recursive call starting with all children of the root of the tree (parameter nodes is reference to an array containing the nodes of the current level).
+ Side effect: increments the scalar ref: numskipped with a count of items in
+ Stored Links unavailable for selection, (e.g., now marked obsolete or
+ inaccessible in Community context).
=item * &makePage(mode, marked)
@@ -511,7 +513,7 @@ sub getNodesToArray {
# Return a script-tag containing Javascript-function
# needed for wishlist actions like 'new link' ect.
sub JSforWishlist {
- my $startPagePopup = &Apache::loncommon::start_page('Wishlist',undef,
+ my $startPagePopup = &Apache::loncommon::start_page('Stored Links',undef,
{'only_body' => 1,
'js_ready' => 1,
'bgcolor' => '#FFFFFF',});
@@ -528,14 +530,16 @@ sub JSforWishlist {
# that means that it is checked wether a path contains .problem, .quiz, .exam etc.
# this is good for most cases but crashes as soon as a real external website contains one of this pattern in its URL.
# so maybe there's a better way to find out wether a given URL belongs to a LON-CAPA-server or not ...?
- my $warningLinkNotAllowed1 = &mt('You can only insert links to LON-CAPA resources from the resource-pool '.
- 'or to external websites. Paths to LON-CAPA resources must be of the form /res/dom/usr... . '.
- 'Paths to external websites must contain the network protocol (e.g. http://...).');
- my $warningLinkNotAllowed2 = &mt('The following link is not allowed: ');
+ my $warningLinkNotAllowed1 =
+ &mt('You can only insert links to LON-CAPA resources from the resource-pool'.
+ ' or to external websites.'.
+ ' 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://...');
+ 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 $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 $warningMoveD = &mt('You must select a destination folder!');
$foldersOption = '';
@@ -808,7 +812,9 @@ sub JSforWishlist {
function setChecked(row,checked) {
var childCHECK = document.getElementById(row.id.replace('row','check'));
- childCHECK.checked = checked;
+ if (!childCHECK.disabled) {
+ childCHECK.checked = checked;
+ }
}
function getPreviousFolderRows(row) {
@@ -1008,14 +1014,18 @@ sub JSforWishlist {
function checkAll() {
var checkboxes = document.getElementsByName('check');
for (var i = 0; i < checkboxes.length; i++) {
- checkboxes[i].checked = "checked";
+ if (!checkboxes[i].disabled) {
+ checkboxes[i].checked = "checked";
+ }
}
}
function uncheckAll() {
var checkboxes = document.getElementsByName('check');
for (var i = 0; i < checkboxes.length; i++) {
- checkboxes[i].checked = "";
+ if (!checkboxes[i].disabled) {
+ checkboxes[i].checked = "";
+ }
}
}
@@ -1270,7 +1280,7 @@ sub wishlistMove {
$wishlistHTMLmove .= '
'.
'
';
}
- # higlight the title, if the folder was selected to be moved
+ # highlight the title, if the folder was selected to be moved
else {
$wishlistHTMLmove .= '
';
$form++;
}
@@ -1396,10 +1437,11 @@ sub wishlistImport {
my @children = $n->children();
if ($#children >=0) {
$indent += 20;
- &wishlistImport(\@children);
+ &wishlistImport(\@children,$numskipped);
$indent -= 20;
}
}
+ return;
}
# Returns the HTML-Markup for wishlist
@@ -1415,13 +1457,13 @@ sub makePage {
&Apache::lonhtmlcommon::clear_breadcrumbs();
&Apache::lonhtmlcommon::add_breadcrumb(
{ href => '/adm/wishlist?mode='.$mode,
- text => 'Wishlist'});
- my $startPage = &Apache::loncommon::start_page('Wishlist',undef,
+ text => 'Stored Links'});
+ my $startPage = &Apache::loncommon::start_page('Stored Links',undef,
{'add_entries' => {
'onload' => 'javascript:onLoadAction('."'".$mode."'".');',
'onunload' => 'javascript:window.name = '."'loncapaclient'"}});
- my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs(&mt('Wishlist').&Apache::loncommon::help_open_topic('Wishlist'));
+ my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs(&mt('Stored Links').&Apache::loncommon::help_open_topic('Wishlist'));
# get javascript-code for wishlist-interactions
my $js = &JSforWishlist();
@@ -1513,7 +1555,7 @@ sub makePage {
$inner .= &Apache::loncommon::end_data_table();
}
else {
- $inner .= ''.&mt("Your wishlist ist currently empty.").'';
+ $inner .= ''.&mt("Your Stored Links list is currently empty.").'';
}
$wishlistHTMLedit = '';
}
@@ -1523,7 +1565,7 @@ sub makePage {
$inner .= '
'.$wishlistHTMLview.'
';
}
else {
- $inner .= ''.&mt("Your wishlist ist currently empty.").'';
+ $inner .= ''.&mt("Your Stored Links list is currently empty.").'';
}
$wishlistHTMLview = '';
}
@@ -1586,16 +1628,18 @@ sub makePopUpNewLink {
# HTML-Markup for the Pop-Up-window 'Set a link for this resource to wishlist'
my $startPageWishlistlink =
- &Apache::loncommon::start_page('Set link to wishlist',undef,
+ &Apache::loncommon::start_page('Save to Stored Links',undef,
{'only_body' => 1,
'bgcolor' => '#FFFFFF',});
my $warningLink = &mt('You must insert a title!');
- my $warningLinkNotAllowed1 = &mt('You can only insert links to LON-CAPA resources from the resource-pool '.
- 'or to external websites. Paths to LON-CAPA resources must be of the form /res/dom/usr... . '.
- 'Paths to external websites must contain the network protocol (e.g. http://...).');
+ my $warningLinkNotAllowed1 =
+ &mt('You can only insert links to LON-CAPA resources from the resource-pool'.
+ ' or to external websites.'.
+ ' 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://...');
- my $inPageWishlistlink1 = '
'.&mt('Set a link to wishlist').'
';
+ my $inPageWishlistlink1 = '
'.&mt('Save to Stored Links').'
';
# If no title is delivered, 'New Link' is called up from the wishlist-interface, so after
# submitting the window should close instead of offering a link to wishlist (like it should do
# if we call 'Set New Link' from within a browsed ressource)
@@ -1623,7 +1667,7 @@ sub makePopUpNewLink {
''.
- ''.
+ ''.
'';
$options = '';
@@ -1743,16 +1787,16 @@ SCRIPT
# Returns the HTML-Markup for the page, shown when a link was set
sub makePageSet {
# start_page
- my $startPage = &Apache::loncommon::start_page('Wishlist',undef,
+ my $startPage = &Apache::loncommon::start_page('Stored Links',undef,
{'only_body' => 1});
# confirm success and offer link to wishlist
- my $message = &Apache::lonhtmlcommon::confirm_success(&mt('Link successfully set!'));
+ my $message = &Apache::lonhtmlcommon::confirm_success(&mt('Link successfully saved!'));
$message = &Apache::loncommon::confirmwrapper($message);
my $inner .= ' '.$message.'
'.
- ''.&mt('Go to wishlist').''.
- ' '.&mt('Close this window').'';
+ ''.&mt('Go to Stored Links').''.(' ' x 3).
+ ''.&mt('Close this window').'';
# end_page
my $endPage = &Apache::loncommon::end_page();
@@ -1772,23 +1816,30 @@ sub makePageImport {
$root = $rootgiven;
@childrenRt = $root->children();
# start_page
- my $startPage = &Apache::loncommon::start_page('Wishlist',undef,
+ my $startPage = &Apache::loncommon::start_page('Stored Links',undef,
{'only_body' => 1});
# get javascript-code for wishlist-interactions
my $js = &JSforWishlist();
$js .= &JSforImport($rat);
- my $inner = '
'.&mt('Import Resources from Wishlist').'
';
+ my $inner = '
'.&mt('Import Resources from Stored Links').'
';
if (!$rat) {
- $inner .= '
'.&mt("Please note that you can use the checkboxes corresponding to a folder to ".
- "easily check all links within this folder. The folder structure itself can't be imported. ".
- "All checked links will be imported into the current folder of your course.").'
';
+ $inner .=
+ '
'.
+ '
'.&mt('Use the checkboxes corresponding to a folder to '.
+ 'easily check all links within the folder.').'
'.
+ '
'.&mt('The folder structure itself cannot be imported.').'
'.
+ '
'.&mt('All checked links will be imported into the current folder of your course.').'
'.
+ '
';
}
else {
- $inner .= '
'.&mt("Please note that you can use the checkboxes corresponding to a folder to ".
- "easily check all links within this folder. The folder structure itself can't be imported. ")
- .'
';
+ $inner .=
+ '
'.
+ '
'.&mt('Use the checkboxes corresponding to a folder to '.
+ 'easily check all links within this folder.').'
'.
+ '
'.&mt('The folder structure itself cannot be imported.').'
'.
+ '
';
}
my %wishlist = &getWishlist();
@@ -1813,12 +1864,16 @@ sub makePageImport {
# wishlist-table
- &wishlistImport(\@childrenRt);
+ my $numskipped = 0;
+ &wishlistImport(\@childrenRt,\$numskipped);
if ($wishlistHTMLimport ne '') {
$inner .= '
'.$wishlistHTMLimport.'
';
}
else {
- $inner .= ''.&mt("Your wishlist ist currently empty.").'';
+ $inner .= ''.&mt("Your Stored Links list is currently empty.").'';
+ }
+ if ($numskipped > 0) {
+ $inner .= '
'.&mt('Note: where a Stored Link is unavailable for import in the current context it is grayed out.').'
';
}
$wishlistHTMLimport = '';
@@ -1839,10 +1894,10 @@ sub makeErrorPage {
# breadcrumbs and start_page
&Apache::lonhtmlcommon::add_breadcrumb(
{ href => '/adm/wishlist',
- text => 'Wishlist'});
- my $startPage = &Apache::loncommon::start_page('Wishlist');
+ text => 'Stored Links'});
+ my $startPage = &Apache::loncommon::start_page('Stored Links');
- my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs(&mt('Wishlist').&Apache::loncommon::help_open_topic('Wishlist'));
+ my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs(&mt('Stored Links').&Apache::loncommon::help_open_topic('Wishlist'));
&Apache::lonhtmlcommon::clear_breadcrumbs();
# error-message