[LON-CAPA-cvs] cvs: loncom /interface lonmenu.pm lonsearchcat.pm lonwishlist.pm lonwishlistdisplay.pm
wenzelju
wenzelju@source.lon-capa.org
Tue, 15 Feb 2011 14:54:51 -0000
This is a MIME encoded message
--wenzelju1297781691
Content-Type: text/plain
wenzelju Tue Feb 15 14:54:51 2011 EDT
Modified files:
/loncom/interface lonmenu.pm lonsearchcat.pm lonwishlist.pm
lonwishlistdisplay.pm
Log:
- Changed the way the pop-up-windows for 'Add Link' and 'Add Folder' are generated (have to call lonwishlist here to get the newest information, i.e. about the existing folders, instead of writing the pop-up-window statically via javascript).
--wenzelju1297781691
Content-Type: text/plain
Content-Disposition: attachment; filename="wenzelju-20110215145451.txt"
Index: loncom/interface/lonmenu.pm
diff -u loncom/interface/lonmenu.pm:1.346 loncom/interface/lonmenu.pm:1.347
--- loncom/interface/lonmenu.pm:1.346 Thu Jan 27 14:38:44 2011
+++ loncom/interface/lonmenu.pm Tue Feb 15 14:54:51 2011
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines to control the menu
#
-# $Id: lonmenu.pm,v 1.346 2011/01/27 14:38:44 wenzelju Exp $
+# $Id: lonmenu.pm,v 1.347 2011/02/15 14:54:51 wenzelju Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -1106,10 +1106,6 @@
my $confirm_switch = &mt("Editing requires switching to the resource's home server.").'\n'.
&mt('Switch server?');
- my $wishlistpopup;
- if (&Apache::lonwishlist::getWishlist() ne 'error') {
- $wishlistpopup = &Apache::lonwishlist::makePopUpNewLink();
- }
return (<<ENDUTILITY)
@@ -1235,7 +1231,15 @@
}
function set_wishlistlink(title, path) {
- $wishlistpopup
+ if (!title) {
+ title = document.title;
+ title = title.replace(/^LON-CAPA /,'');
+ }
+ if (!path) {
+ path = location.pathname;
+ }
+ Win = window.open('/adm/wishlist?mode=newLink&setTitle='+title+'&setPath='+path,
+ 'wishlistNewLink','width=560,height=350,scrollbars=0');
}
function open_Wishlist_Import(rat) {
Index: loncom/interface/lonsearchcat.pm
diff -u loncom/interface/lonsearchcat.pm:1.328 loncom/interface/lonsearchcat.pm:1.329
--- loncom/interface/lonsearchcat.pm:1.328 Thu Jan 27 14:38:44 2011
+++ loncom/interface/lonsearchcat.pm Tue Feb 15 14:54:51 2011
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Search Catalog
#
-# $Id: lonsearchcat.pm,v 1.328 2011/01/27 14:38:44 wenzelju Exp $
+# $Id: lonsearchcat.pm,v 1.329 2011/02/15 14:54:51 wenzelju Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -3059,17 +3059,14 @@
</script>
SCRIPT
- my $wishlistpopup;
- if (&Apache::lonwishlist::getWishlist() ne 'error') {
- $wishlistpopup = &Apache::lonwishlist::makePopUpNewLink();
- }
# Add JavaScript-function to set link for a ressource to wishlist
$js.=<<SCRIPT;
<script type="text/javascript">
// <![CDATA[
function set_wishlistlink(title, path){
- $wishlistpopup;
+ Win = window.open('/adm/wishlist?mode=newLink&setTitle='+title+'&setPath='+path,
+ 'wishlistNewLink','width=560,height=350,scrollbars=0');
}
// ]]>
Index: loncom/interface/lonwishlist.pm
diff -u loncom/interface/lonwishlist.pm:1.9 loncom/interface/lonwishlist.pm:1.10
--- loncom/interface/lonwishlist.pm:1.9 Thu Jan 27 14:38:44 2011
+++ loncom/interface/lonwishlist.pm Tue Feb 15 14:54:51 2011
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Utility-routines for wishlist
#
-# $Id: lonwishlist.pm,v 1.9 2011/01/27 14:38:44 wenzelju Exp $
+# $Id: lonwishlist.pm,v 1.10 2011/02/15 14:54:51 wenzelju Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -478,6 +478,16 @@
Calls &wishlistView(nodes), &wishlistEdit(nodes) or &wishlistMove(nodes, marked).
+=item * &makePopUpNewLink(title, path)
+
+ Returns the HTML-markup for the pop-up-window 'Add Link'. If this is called up from a browsed resource, the input-fields titel and path are pre-filled with the resources' meta-data-title and it's path.
+
+
+=item * &makePopUpNewFolder()
+
+ Returns the HTML-markup for the pop-up-window 'Add Folder'.
+
+
=item * &makePageSet()
Returns the HTML-Markup for the page shown when a link was set by using the icon when viewing a resource.
@@ -511,65 +521,6 @@
&getFoldersToArray(\@childrenRt);
&getFoldersForOption(\@childrenRt);
- # texthash
- my %lt = &Apache::lonlocal::texthash(
- 'nl' => 'New Link',
- 'nf' => 'New Folder',
- 'lt' => 'Link Title',
- 'ft' => 'Folder Title',
- 'pa' => 'Path',
- 'nt' => 'Note',
- 'si' => 'Save in',
- 'cl' => 'Cancel');
-
-
- my $inPageNewLink = '<h1>'.$lt{'nl'}.'</h1>'.
- '<form method="post" name="newlink" action="/adm/wishlist" target="wishlist" '.
- 'onsubmit="return newlinksubmit();" >'.
- &Apache::lonhtmlcommon::start_pick_box().
- &Apache::lonhtmlcommon::row_title($lt{'lt'}).
- '<input type="text" name="title" size="45" value="" />'.
- &Apache::lonhtmlcommon::row_closure().
- &Apache::lonhtmlcommon::row_title($lt{'pa'}).
- '<input type="text" name="path" size="45" value="" />'.
- &Apache::lonhtmlcommon::row_closure().
- &Apache::lonhtmlcommon::row_title($lt{'nt'}).
- '<textarea name="note" rows="3" cols="35" style="width:100%"></textarea>'.
- &Apache::lonhtmlcommon::row_closure(1).
- &Apache::lonhtmlcommon::end_pick_box().
- '<br/><br/>'.
- '<input type="submit" value="'.$lt{'si'}.'" />'.
- '<select name="folders">'.
- '<option value="" selected="selected">('.&mt('Top level').')</option>'.
- $foldersOption.
- '</select>'.
- '<input type="button" value="'.$lt{'cl'}.'" onclick="javascript:window.close();" />'.
- '</form>';
-
- my $inPageNewFolder = '<h1>'.$lt{'nf'}.'</h1>'.
- '<form method="post" name="newfolder" action="/adm/wishlist" target="wishlist" '.
- 'onsubmit="return newfoldersubmit();" >'.
- &Apache::lonhtmlcommon::start_pick_box().
- &Apache::lonhtmlcommon::row_title($lt{'ft'}).
- '<input type="text" name="title" size="45" value="" /><br />'.
- &Apache::lonhtmlcommon::row_closure().
- &Apache::lonhtmlcommon::row_title($lt{'nt'}).
- '<textarea name="note" rows="3" cols="35" style="width:100%"></textarea><br />'.
- &Apache::lonhtmlcommon::row_closure(1).
- &Apache::lonhtmlcommon::end_pick_box().
- '<br/><br/>'.
- '<input type="submit" value="'.$lt{'si'}.'" />'.
- '<select name="folders">'.
- '<option value="" selected="selected">('.&mt('Top level').')</option>'.
- $foldersOption.
- '</select>'.
- '<input type="button" value="'.$lt{'cl'}.'" onclick="javascript:window.close();" />'.
- '</form>';
-
- # Remove all \n for inserting on javascript document.write
- $inPageNewLink =~ s/\n//g;
- $inPageNewFolder =~ s/\n//g;
-
# it is checked, wether a path links to a LON-CAPA-resource or an external website. links to course-contents are not allowed
# because they probably will return a kind of 'no access' (unless the user is already in the course, the path links to).
# also importing these kind of links into a course does not make much sense.
@@ -591,49 +542,11 @@
my $js = &Apache::lonhtmlcommon::scripttag(<<JAVASCRIPT);
function newLink() {
- newlinkWin=window.open('','newlinkWin','width=580,height=320,scrollbars=yes');
- newlinkWin.document.write('$startPagePopup'
- +'<script type="text\/javascript">'
- +'function newlinksubmit(){'
- +'var path = document.getElementsByName("path")[0].value;'
- +'var title = document.getElementsByName("title")[0].value;'
- +'if (!path || !title) {'
- +'alert("$warningLink");'
- +'return false;}'
- +'var linkOK = (path.match(/^http:(\\\\/\\\\/)/) || path.match(/^https:(\\\\/\\\\/)/))'
- +'&& !(path.match(/\\.problem/) || path.match(/\\.exam/)'
- +'|| path.match(/\\.quiz/) || path.match(/\\.assess/)'
- +'|| path.match(/\\.survey/) || path.match(/\\.form/)'
- +'|| path.match(/\\.library/) || path.match(/\\.page/)'
- +'|| path.match(/\\.sequence/));'
- +'if (!path.match(/^(\\\\/res\\\\/)/) && !linkOK) {'
- +'alert("$warningLinkNotAllowed1");'
- +'return false;}'
- +'else {'
- +'window.close();'
- +'return true;}}'
- +'<\/scr'+'ipt>'
- +'$inPageNewLink'
- +'$endPagePopup');
- newlinkWin.document.close();
+ newlinkWin=window.open('/adm/wishlist?mode=newLink','newlinkWin','width=580,height=350, scrollbars=yes');
}
function newFolder() {
- newfolderWin=window.open('','newfolderWin','width=580,height=270, scrollbars=yes');
- newfolderWin.document.write('$startPagePopup'
- +'<script type="text\/javascript">'
- +'function newfoldersubmit(){'
- +'var title = document.getElementsByName("title")[0].value;'
- +'if (!title) {'
- +'alert("$warningFolder");'
- +'return false;}'
- +'else {'
- +'window.close();'
- +'return true;}}'
- +'<\/scr'+'ipt>'
- +'$inPageNewFolder'
- +'$endPagePopup');
- newfolderWin.document.close();
+ newfolderWin=window.open('/adm/wishlist?mode=newFolder','newfolderWin','width=580,height=270, scrollbars=yes');
}
function setFormAction(action,mode) {
@@ -1653,7 +1566,8 @@
# Returns the HTML-Markup for the PopUp, shown when a new link should set, when NOT
# beeing in the wishlist-interface (method is called in lonmenu and lonsearchcat)
-sub makePopUpNewLink{
+sub makePopUpNewLink {
+ my ($title, $path) = @_;
# Get all existing folders to offer posibility to set a new link
# into a folder
@@ -1670,82 +1584,160 @@
$foldersOption = '';
@allFolders = ();
- # HTML-Markup for 'Set a link for this resource to wishlist'
- # this is written via JavaScript document.write (function set_wishlistlink)
- # it is split into 3 parts and the inputfields for title and path are left out
- # these fields are inserted later to set the values for title and path
- # automatically via JavaScript (document.title and location.pathname)
-
- my $start_page_wishlistlink =
+ # 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,
- {'only_body' => 1,
- 'js_ready' => 1,
- 'bgcolor' => '#FFFFFF',});
+ {'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 $inPageWishlistlink1 = '<h1>'.&mt('Set a link to wishlist').'</h1>';
+ # 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)
+ if (!$title) {
+ $inPageWishlistlink1 .= '<form method="post" name="newlink" action="/adm/wishlist" target="wishlist"'.
+ 'onsubmit="return newlinksubmit();" >';
+ }
+ else {
+ $inPageWishlistlink1 .= '<form method="post" name="newlink" action="/adm/wishlist?mode=set" '.
+ 'onsubmit="return newlinksubmit();" >';
+ }
+ $inPageWishlistlink1 .= &Apache::lonhtmlcommon::start_pick_box().
+ &Apache::lonhtmlcommon::row_title(&mt('Link Title'));
+
+ my $inPageWishlistlink2 = &Apache::lonhtmlcommon::row_closure().
+ &Apache::lonhtmlcommon::row_title(&mt('Path'));
- my $in_page_wishlistlink1 = '<h1>'.&mt('Set a link to wishlist').'</h1>'.
- '<form method="post" name="newlink" action="/adm/wishlist?mode=set" '.
- 'onsubmit="return newlinksubmit();" >'.
- &Apache::lonhtmlcommon::start_pick_box().
- &Apache::lonhtmlcommon::row_title(&mt('Link Title'));
-
- my $in_page_wishlistlink2 = &Apache::lonhtmlcommon::row_closure().
- &Apache::lonhtmlcommon::row_title(&mt('Path'));
-
- my $in_page_wishlistlink3 = &Apache::lonhtmlcommon::row_closure().
- &Apache::lonhtmlcommon::row_title(&mt('Note')).
- '<textarea name="note" rows="3" cols="35" style="width:100%"></textarea>'.
- &Apache::lonhtmlcommon::row_closure(1).
- &Apache::lonhtmlcommon::end_pick_box().
- '<br/><br/>'.
- '<input type="submit" value="'.&mt('Save in').'" />'.
- '<select name="folders">'.
- $options.
- '</select>'.
- '<input type="button" value="'.&mt('cancel').'" onclick="javascript:window.close();" />'.
- '</form>';
+ my $inPageWishlistlink3 = &Apache::lonhtmlcommon::row_closure().
+ &Apache::lonhtmlcommon::row_title(&mt('Note')).
+ '<textarea name="note" rows="3" cols="35" style="width:100%"></textarea>'.
+ &Apache::lonhtmlcommon::row_closure(1).
+ &Apache::lonhtmlcommon::end_pick_box().
+ '<br/><br/>'.
+ '<input type="submit" value="'.&mt('Save in').'" />'.
+ '<select name="folders">'.
+ $options.
+ '</select>'.
+ '<input type="button" value="'.&mt('cancel').'" onclick="javascript:window.close();" />'.
+ '</form>';
$options = '';
- # remove all \n for inserting on javascript document.write
- $in_page_wishlistlink1 =~ s/\n//g;
- $in_page_wishlistlink2 =~ s/\n//g;
- $in_page_wishlistlink3 =~ s/\n//g;
-
- my $end_page_wishlistlink =
- &Apache::loncommon::end_page({'js_ready' => 1});
-
- # Add JavaScript-function to set link for a ressource to wishlist
- my $js.=<<SCRIPT;
- if(!title){
- title=document.title;
- }
- if(!path){
- path=location.pathname;
- }
- title = title.replace(/^LON-CAPA /,'');
- wishlistlink=window.open('','wishlistNewLink','width=560,height=350,scrollbars=0');
- wishlistlink.document.write(
- '$start_page_wishlistlink'
- +'<script type="text\/javascript">'
- +'function newlinksubmit(){'
- +'var title = document.getElementsByName("title")[0].value;'
- +'if (!title) {'
- +'alert("$warningLink");'
- +'return false;}'
- +'return true;}'
- +'<\/scr'+'ipt>'
- +'$in_page_wishlistlink1'
- +'<input type="text" name="title" size="45" value="'+title+'"/>'
- +'$in_page_wishlistlink2'
- +'<input type="text" name="path" size="45" value="'+path+'" '
- +'readonly="readonly" style="background-color: #DDDDDD"/>'
- +'$in_page_wishlistlink3'
- +'$end_page_wishlistlink' );
- wishlistlink.document.close();
+ my $endPageWishlistlink = &Apache::loncommon::end_page();
+
+ my $popUp = $startPageWishlistlink.
+ $inPageWishlistlink1.
+ '<input type="text" name="title" size="45" value=""/>'.
+ $inPageWishlistlink2.
+ '<input type="text" name="path" size="45" value=""/>'.
+ $inPageWishlistlink3;
+
+ # JavaScript-function to set title and path of ressource automatically
+ # and show warning, if no title was set or path is invalid
+ $popUp .= <<SCRIPT;
+ <script type="text\/javascript">
+ document.getElementsByName("title")[0].value = '$title';
+ document.getElementsByName("path")[0].value = '$path';
+ var fromwishlist = false;
+ var titleget = '$title';
+ if (!titleget) {
+ fromwishlist = true;
+ }
+ function newlinksubmit(){
+ var title = document.getElementsByName("title")[0].value;
+ var path = document.getElementsByName("path")[0].value;
+ if (!title) {
+ alert("$warningLink");
+ return false;}
+ var linkOK = (path.match(/\^http:(\\\/\\\/)/) || path.match(/\^https:(\\\/\\\/)/))
+ && !(path.match(/\\.problem/) || path.match(/\\.exam/)
+ || path.match(/\\.quiz/) || path.match(/\\.assess/)
+ || path.match(/\\.survey/) || path.match(/\\.form/)
+ || path.match(/\\.library/) || path.match(/\\.page/)
+ || path.match(/\\.sequence/));
+ if (!path.match(/\^(\\\/res\\\/)/) && !linkOK) {
+ alert("$warningLinkNotAllowed1");
+ return false;}
+ if (fromwishlist) {
+ window.close();
+ }
+ return true;}
+ <\/script>
SCRIPT
- return $js;
+ $popUp .= $endPageWishlistlink;
+
+ return $popUp;
+}
+
+sub makePopUpNewFolder {
+ # Get all existing folders to offer posibility to create a new folder
+ # into an existing folder
+ my %TreeHashLink = &Apache::lonwishlist::getWishlist();
+ my $rootLink = &Apache::Tree::HashToTree(\%TreeHashLink);
+ my @childrenRtLink = $rootLink->children();
+
+ $foldersOption = '';
+ @allFolders = ();
+ &getFoldersToArray(\@childrenRtLink);
+ &getFoldersForOption(\@childrenRtLink);
+
+ my $options = '<option value="" selected="selected">('.&mt('Top level').')</option>'.$foldersOption;
+ $foldersOption = '';
+ @allFolders = ();
+
+ # HTML-Markup for the Pop-Up-window 'New Folder'
+ my $startPageWishlistfolder =
+ &Apache::loncommon::start_page('New Folder',undef,
+ {'only_body' => 1,
+ 'bgcolor' => '#FFFFFF',});
+
+ my $warningFolder = &mt('You must insert a title!');
+
+
+ my $inPageNewFolder = '<h1>'.&mt('New Folder').'</h1>'.
+ '<form method="post" name="newfolder" action="/adm/wishlist" target="wishlist" '.
+ 'onsubmit="return newfoldersubmit();" >'.
+ &Apache::lonhtmlcommon::start_pick_box().
+ &Apache::lonhtmlcommon::row_title(&mt('Folder title')).
+ '<input type="text" name="title" size="45" value="" /><br />'.
+ &Apache::lonhtmlcommon::row_closure().
+ &Apache::lonhtmlcommon::row_title(&mt('Note')).
+ '<textarea name="note" rows="3" cols="35" style="width:100%"></textarea><br />'.
+ &Apache::lonhtmlcommon::row_closure(1).
+ &Apache::lonhtmlcommon::end_pick_box().
+ '<br/><br/>'.
+ '<input type="submit" value="'.&mt('Save in').'" />'.
+ '<select name="folders">'.
+ $options.
+ '</select>'.
+ '<input type="button" value="'.&mt('Cancel').'" onclick="javascript:window.close();" />'.
+ '</form>';
+ my $endPageWishlistfolder = &Apache::loncommon::end_page();
+
+ my $popUp = $startPageWishlistfolder.
+ $inPageNewFolder;
+
+ $popUp .= <<SCRIPT;
+ <script type="text\/javascript">
+ function newfoldersubmit(){
+ var title = document.getElementsByName("title")[0].value;
+ if (!title) {
+ alert("$warningFolder");
+ return false;}
+ else {
+ window.close();
+ return true;}}
+ <\/script>
+SCRIPT
+
+ $popUp .= $endPageWishlistfolder;
+
+ return $popUp;
}
# Returns the HTML-Markup for the page, shown when a link was set
Index: loncom/interface/lonwishlistdisplay.pm
diff -u loncom/interface/lonwishlistdisplay.pm:1.1 loncom/interface/lonwishlistdisplay.pm:1.2
--- loncom/interface/lonwishlistdisplay.pm:1.1 Thu Jan 27 14:38:44 2011
+++ loncom/interface/lonwishlistdisplay.pm Tue Feb 15 14:54:51 2011
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines to display the wishlist (handler)
#
-# $Id: lonwishlistdisplay.pm,v 1.1 2011/01/27 14:38:44 wenzelju Exp $
+# $Id: lonwishlistdisplay.pm,v 1.2 2011/02/15 14:54:51 wenzelju Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -64,7 +64,7 @@
}
# get unprocessed_cgi (i.e. marked entries, mode ...)
- &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['action','mark','markedToMove','mode','newtitle','note','rat']);
+ &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['action','mark','markedToMove','mode','newtitle','note','rat','setTitle','setPath']);
# change the order of entries within a level, that means sorting the entries
my $changeOrder = 0;
@@ -150,6 +150,12 @@
elsif ($env{'form.mode'} eq 'import') {
$page = &Apache::lonwishlist::makePageImport($root, $env{'form.rat'});
}
+ elsif ($env{'form.mode'} eq 'newLink') {
+ $page = &Apache::lonwishlist::makePopUpNewLink($env{'form.setTitle'},$env{'form.setPath'});
+ }
+ elsif ($env{'form.mode'} eq 'newFolder') {
+ $page = &Apache::lonwishlist::makePopUpNewFolder();
+ }
elsif ($env{'form.mode'} eq 'set') {
$page = &Apache::lonwishlist::makePageSet();
}
--wenzelju1297781691--