Diff for /loncom/interface/lonwishlist.pm between versions 1.9 and 1.10

version 1.9, 2011/01/27 14:38:44 version 1.10, 2011/02/15 14:54:51
Line 478  sub getNodesToArray { Line 478  sub getNodesToArray {
      Calls &wishlistView(nodes), &wishlistEdit(nodes) or &wishlistMove(nodes, marked).       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()  =item * &makePageSet()
   
      Returns the HTML-Markup for the page shown when a link was set by using the icon when viewing a resource.       Returns the HTML-Markup for the page shown when a link was set by using the icon when viewing a resource.
Line 511  sub JSforWishlist { Line 521  sub JSforWishlist {
     &getFoldersToArray(\@childrenRt);      &getFoldersToArray(\@childrenRt);
     &getFoldersForOption(\@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      # 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).      # 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.      # also importing these kind of links into a course does not make much sense.
Line 591  sub JSforWishlist { Line 542  sub JSforWishlist {
   
     my $js = &Apache::lonhtmlcommon::scripttag(<<JAVASCRIPT);      my $js = &Apache::lonhtmlcommon::scripttag(<<JAVASCRIPT);
     function newLink() {      function newLink() {
         newlinkWin=window.open('','newlinkWin','width=580,height=320,scrollbars=yes');          newlinkWin=window.open('/adm/wishlist?mode=newLink','newlinkWin','width=580,height=350, 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();  
     }      }
   
     function newFolder() {      function newFolder() {
         newfolderWin=window.open('','newfolderWin','width=580,height=270, scrollbars=yes');          newfolderWin=window.open('/adm/wishlist?mode=newFolder','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();  
     }      }
   
     function setFormAction(action,mode) {      function setFormAction(action,mode) {
Line 1653  sub makePage { Line 1566  sub makePage {
   
 # Returns the HTML-Markup for the PopUp, shown when a new link should set, when NOT  # 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)  # 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      # Get all existing folders to offer posibility to set a new link
     # into a folder      # into a folder
Line 1670  sub makePopUpNewLink{ Line 1584  sub makePopUpNewLink{
     $foldersOption = '';      $foldersOption = '';
     @allFolders = ();      @allFolders = ();
   
     # HTML-Markup for 'Set a link for this resource to wishlist'      # HTML-Markup for the Pop-Up-window 'Set a link for this resource to wishlist'
     # this is written via JavaScript document.write (function set_wishlistlink)       my $startPageWishlistlink = 
     # 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 =   
         &Apache::loncommon::start_page('Set link to wishlist',undef,          &Apache::loncommon::start_page('Set link to wishlist',undef,
        {'only_body' => 1,                                        {'only_body' => 1,
  'js_ready'  => 1,                                         'bgcolor'   => '#FFFFFF',});
  'bgcolor'   => '#FFFFFF',});  
   
     my $warningLink = &mt('You must insert a title!');      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>'.      my $inPageWishlistlink3 = &Apache::lonhtmlcommon::row_closure().
                                 '<form method="post" name="newlink" action="/adm/wishlist?mode=set" '.                                &Apache::lonhtmlcommon::row_title(&mt('Note')).
                                 'onsubmit="return newlinksubmit();" >'.                                '<textarea name="note" rows="3" cols="35" style="width:100%"></textarea>'.
                                 &Apache::lonhtmlcommon::start_pick_box().                                &Apache::lonhtmlcommon::row_closure(1).
                                 &Apache::lonhtmlcommon::row_title(&mt('Link Title'));                                &Apache::lonhtmlcommon::end_pick_box().
                                 '<br/><br/>'.
     my $in_page_wishlistlink2 = &Apache::lonhtmlcommon::row_closure().                                '<input type="submit" value="'.&mt('Save in').'" />'.
                                 &Apache::lonhtmlcommon::row_title(&mt('Path'));                                '<select name="folders">'.
                                 $options.
     my $in_page_wishlistlink3 = &Apache::lonhtmlcommon::row_closure().                                '</select>'.
                                 &Apache::lonhtmlcommon::row_title(&mt('Note')).                                '<input type="button" value="'.&mt('cancel').'" onclick="javascript:window.close();" />'.
                                 '<textarea name="note" rows="3" cols="35" style="width:100%"></textarea>'.                                '</form>';
                                 &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 = '';      $options = '';
   
     # remove all \n for inserting on javascript document.write      my $endPageWishlistlink = &Apache::loncommon::end_page();
     $in_page_wishlistlink1 =~ s/\n//g;  
     $in_page_wishlistlink2 =~ s/\n//g;      my $popUp = $startPageWishlistlink.
     $in_page_wishlistlink3 =~ s/\n//g;      $inPageWishlistlink1.
       '<input type="text" name="title" size="45" value=""/>'.
     my $end_page_wishlistlink =       $inPageWishlistlink2.
        &Apache::loncommon::end_page({'js_ready' => 1});      '<input type="text" name="path" size="45" value=""/>'.
       $inPageWishlistlink3;
     # Add JavaScript-function to set link for a ressource to wishlist  
     my $js.=<<SCRIPT;      # JavaScript-function to set title and path of ressource automatically
     if(!title){      # and show warning, if no title was set or path is invalid
         title=document.title;      $popUp .= <<SCRIPT;
     }      <script type="text\/javascript">
     if(!path){      document.getElementsByName("title")[0].value = '$title';
         path=location.pathname;      document.getElementsByName("path")[0].value = '$path';
     }      var fromwishlist = false;
     title = title.replace(/^LON-CAPA /,'');      var titleget = '$title';
     wishlistlink=window.open('','wishlistNewLink','width=560,height=350,scrollbars=0');      if (!titleget) {
     wishlistlink.document.write(          fromwishlist = true;
     '$start_page_wishlistlink'      } 
     +'<script type="text\/javascript">'      function newlinksubmit(){
     +'function newlinksubmit(){'      var title = document.getElementsByName("title")[0].value;
     +'var title = document.getElementsByName("title")[0].value;'      var path = document.getElementsByName("path")[0].value;
     +'if (!title) {'      if (!title) {
     +'alert("$warningLink");'          alert("$warningLink");
     +'return false;}'          return false;}
     +'return true;}'      var linkOK = (path.match(/\^http:(\\\/\\\/)/) || path.match(/\^https:(\\\/\\\/)/))
     +'<\/scr'+'ipt>'      && !(path.match(/\\.problem/) || path.match(/\\.exam/)
     +'$in_page_wishlistlink1'      || path.match(/\\.quiz/) || path.match(/\\.assess/)
     +'<input type="text" name="title" size="45" value="'+title+'"/>'      || path.match(/\\.survey/) || path.match(/\\.form/)
     +'$in_page_wishlistlink2'      || path.match(/\\.library/) || path.match(/\\.page/)
     +'<input type="text" name="path" size="45" value="'+path+'" '      || path.match(/\\.sequence/));
     +'readonly="readonly" style="background-color: #DDDDDD"/>'      if (!path.match(/\^(\\\/res\\\/)/) && !linkOK) {
     +'$in_page_wishlistlink3'          alert("$warningLinkNotAllowed1");
     +'$end_page_wishlistlink' );          return false;}
     wishlistlink.document.close();      if (fromwishlist) {
           window.close();
       }
       return true;}
       <\/script>
 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  # Returns the HTML-Markup for the page, shown when a link was set

Removed from v.1.9  
changed lines
  Added in v.1.10


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>