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

version 1.9, 2011/01/27 14:38:44 version 1.13, 2012/05/16 11:26:03
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 501  sub getNodesToArray { Line 511  sub getNodesToArray {
 # Return a script-tag containing Javascript-function  # Return a script-tag containing Javascript-function
 # needed for wishlist actions like 'new link' ect.  # needed for wishlist actions like 'new link' ect.
 sub JSforWishlist {  sub JSforWishlist {
     my $startPagePopup = &Apache::loncommon::start_page('Wishlist',undef,      my $startPagePopup = &Apache::loncommon::start_page('Stored Links',undef,
                                                             {'only_body' => 1,                                                              {'only_body' => 1,
                                                              'js_ready'  => 1,                                                               'js_ready'  => 1,
                                                              'bgcolor'   => '#FFFFFF',});                                                               'bgcolor'   => '#FFFFFF',});
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 1190  sub wishlistView { Line 1103  sub wishlistView {
     
         # checkboxes          # checkboxes
         $wishlistHTMLview .= '<td><input type="checkbox" name="mark" id="check'.$index.'" value="'.$index.'" '.          $wishlistHTMLview .= '<td><input type="checkbox" name="mark" id="check'.$index.'" value="'.$index.'" '.
                              'onclick="selectAction('."'row".$index."'".')"/></td>';                               'onclick="selectAction('."'row".$index."'".')" /></td>';
   
         # entry is a folder          # entry is a folder
         if ($n->value()->path() eq '') {          if ($n->value()->path() eq '') {
Line 1258  sub wishlistEdit { Line 1171  sub wishlistEdit {
   
         # checkboxes          # checkboxes
         $wishlistHTMLedit .= '<td><input type="checkbox" name="mark" id="check'.$index.'" value="'.$index.'" '.          $wishlistHTMLedit .= '<td><input type="checkbox" name="mark" id="check'.$index.'" value="'.$index.'" '.
                              'onclick="selectAction('."'row".$index."'".')"/></td>';                               'onclick="selectAction('."'row".$index."'".')" /></td>';
   
         # option-tags for sorting entries. we need the numbers from 1 to n with n being the number of entries on the same level as the current entry.          # option-tags for sorting entries. we need the numbers from 1 to n with n being the number of entries on the same level as the current entry.
         # set the number for the current entry into brackets           # set the number for the current entry into brackets 
Line 1281  sub wishlistEdit { Line 1194  sub wishlistEdit {
                                  '<a href="javascript:;" onclick="folderAction('."'row".$index."'".')" style="vertical-align:top" >'.                                   '<a href="javascript:;" onclick="folderAction('."'row".$index."'".')" style="vertical-align:top" >'.
                                  '<img src="/adm/lonIcons/arrow.closed.gif" id="img'.$index.'" alt = ""  class="LC_icon"/>'.                                   '<img src="/adm/lonIcons/arrow.closed.gif" id="img'.$index.'" alt = ""  class="LC_icon"/>'.
                                  '<img src="/adm/lonIcons/navmap.folder.closed.gif" id="imgFolder'.$index.'" alt="folder"/></a>'.                                   '<img src="/adm/lonIcons/navmap.folder.closed.gif" id="imgFolder'.$index.'" alt="folder"/></a>'.
                                  '<input type="text" name="newtitle" value="'.$n->value()->title().'" alt = "'.$n->value()->title().'"/>'.                                   '<input type="text" name="newtitle" value="'.$n->value()->title().'" alt = "'.$n->value()->title().'" />'.
                                  '</td><td></td>';                                   '</td><td></td>';
   
         }          }
Line 1291  sub wishlistEdit { Line 1204  sub wishlistEdit {
                                  $options.'</select></td>'.                                   $options.'</select></td>'.
                                  '<td id="padd'.$index.'" style="padding-left:'.(($indent-$indentConst)<=0?$indentConst:$indent).'px;">'.                                   '<td id="padd'.$index.'" style="padding-left:'.(($indent-$indentConst)<=0?$indentConst:$indent).'px;">'.
                                  '<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"/>'.
                                  '<input type="text" name="newtitle" value="'.$n->value()->title().'" alt = "'.$n->value()->title().'"/></td>'.                                   '<input type="text" name="newtitle" value="'.$n->value()->title().'" alt = "'.$n->value()->title().'" /></td>'.
                                  '<td><input type="text" name="newpath" value="'.$n->value()->path().'" alt = "'.$n->value()->path().'"/></td>';                                   '<td><input type="text" name="newpath" value="'.$n->value()->path().'" alt = "'.$n->value()->path().'" /></td>';
         }          }
                   
         # note-icon, different icons for an entries with note and those without          # note-icon, different icons for an entries with note and those without
Line 1435  sub wishlistImport { Line 1348  sub wishlistImport {
         # checkboxes          # checkboxes
         $wishlistHTMLimport .= '<td>'.          $wishlistHTMLimport .= '<td>'.
                                '<input type="checkbox" name="check" id="check'.$index.'" value="'.$index.'" '.                                 '<input type="checkbox" name="check" id="check'.$index.'" value="'.$index.'" '.
                                'onclick="selectAction('."'row".$index."'".')"/>'.                                 'onclick="selectAction('."'row".$index."'".')" />'.
                                '<input type="hidden" name="title'.$index.'" value="'.&escape($n->value()->title()).'">'.                                 '<input type="hidden" name="title'.$index.'" value="'.&escape($n->value()->title()).'" />'.
                                '<input type="hidden" name="filelink'.$index.'" value="'.&escape($n->value()->path()).'">'.                                 '<input type="hidden" name="filelink'.$index.'" value="'.&escape($n->value()->path()).'" />'.
                                '<input type="hidden" name="id'.$index.'">'.                                 '<input type="hidden" name="id'.$index.'" />'.
                                '</td>';                                 '</td>';
   
         # entry is a folder          # entry is a folder
Line 1502  sub makePage { Line 1415  sub makePage {
     &Apache::lonhtmlcommon::clear_breadcrumbs();      &Apache::lonhtmlcommon::clear_breadcrumbs();
     &Apache::lonhtmlcommon::add_breadcrumb(      &Apache::lonhtmlcommon::add_breadcrumb(
               { href => '/adm/wishlist?mode='.$mode,                { href => '/adm/wishlist?mode='.$mode,
                 text => 'Wishlist'});                  text => 'Stored Links'});
     my $startPage = &Apache::loncommon::start_page('Wishlist',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 = '."'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      # get javascript-code for wishlist-interactions
     my $js = &JSforWishlist();      my $js = &JSforWishlist();
Line 1584  sub makePage { Line 1497  sub makePage {
   
     # start form       # start form 
     my $inner .= '<form name="list" action ="/adm/wishlist" method="post">'.      my $inner .= '<form name="list" action ="/adm/wishlist" method="post">'.
                  '<input type="hidden" id="action" name="action" value=""/>';                   '<input type="hidden" id="action" name="action" value="" />';
     
     # only display subbox in view- or edit-mode      # only display subbox in view- or edit-mode
     if ($mode eq 'view' || $mode eq 'edit') {      if ($mode eq 'view' || $mode eq 'edit') {
Line 1600  sub makePage { Line 1513  sub makePage {
             $inner .= &Apache::loncommon::end_data_table();              $inner .= &Apache::loncommon::end_data_table();
         }          }
         else {          else {
             $inner .= '<span class="LC_info">'.&mt("Your wishlist ist currently empty.").'</span>';              $inner .= '<span class="LC_info">'.&mt("Your Stored Links list is currently empty.").'</span>';
         }          }
         $wishlistHTMLedit = '';          $wishlistHTMLedit = '';
     }      }
Line 1610  sub makePage { Line 1523  sub makePage {
             $inner .= '<table class="LC_data_table LC_tableOfContent">'.$wishlistHTMLview.'</table>';              $inner .= '<table class="LC_data_table LC_tableOfContent">'.$wishlistHTMLview.'</table>';
         }          }
         else {          else {
             $inner .= '<span class="LC_info">'.&mt("Your wishlist ist currently empty.").'</span>';              $inner .= '<span class="LC_info">'.&mt("Your Stored Links list is currently empty.").'</span>';
         }          }
         $wishlistHTMLview = '';          $wishlistHTMLview = '';
     }      }
Line 1621  sub makePage { Line 1534  sub makePage {
         }          }
         if ($markStr) {          if ($markStr) {
             $markStr = substr($markStr, 0, length($markStr)-1);              $markStr = substr($markStr, 0, length($markStr)-1);
             $inner .= '<input type="hidden" value="'.$markStr.'" name="markedToMove"/>';              $inner .= '<input type="hidden" value="'.$markStr.'" name="markedToMove" />';
             $inner .= '<p><span class="LC_info">'.&mt('You have selected the red marked entries to be moved to another folder. '.              $inner .= '<p><span class="LC_info">'.&mt('You have selected the red marked entries to be moved to another folder. '.
                                                    'Now choose the new destination folder.').'</span></p>';                                                     'Now choose the new destination folder.').'</span></p>';
             &wishlistMove(\@childrenRt, $marked);              &wishlistMove(\@childrenRt, $marked);
             $inner .= '<table class="LC_data_table LC_tableOfContent">'.$wishlistHTMLmove.'</table><br/><br/>';              $inner .= '<table class="LC_data_table LC_tableOfContent">'.$wishlistHTMLmove.'</table><br/><br/>';
             $inner .= '<input type="button" value="'.&mt('Move').'" onclick="setFormAction('."'move','view'".');"/>'.              $inner .= '<input type="button" value="'.&mt('Move').'" onclick="setFormAction('."'move','view'".');" />'.
                       '<input type="button" value="'.&mt('Cancel').'" onclick="go('."'/adm/wishlist'".')"/>';                        '<input type="button" value="'.&mt('Cancel').'" onclick="go('."'/adm/wishlist'".')" />';
   
             $wishlistHTMLmove ='<tr id="root" class="LC_odd_row"><td><input type="radio" name="mark" id="radioRoot" value="root" /></td>'.              $wishlistHTMLmove ='<tr id="root" class="LC_odd_row"><td><input type="radio" name="mark" id="radioRoot" value="root" /></td>'.
                                '<td>'.&mt('Top level').'</td><td></td></tr>';                                 '<td>'.&mt('Top level').'</td><td></td></tr>';
         }          }
         else {          else {
             $inner .= '<p><span class="LC_info">'.&mt("You haven't marked any entry to move.").'</span></p>'.              $inner .= '<p><span class="LC_info">'.&mt("You haven't marked any entry to move.").'</span></p>'.
                       '<input type="button" value="'.&mt('Back').'" onclick="go('."'/adm/wishlist'".')"/>';                        '<input type="button" value="'.&mt('Back').'" onclick="go('."'/adm/wishlist'".')" />';
         }          }
     }      }
           
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          &Apache::loncommon::start_page('Save to Stored Links',undef,
     # these fields are inserted later to set the values for title and path                                        {'only_body' => 1,
     # automatically via JavaScript (document.title and location.pathname)                                          'bgcolor'   => '#FFFFFF',});
   
     my $start_page_wishlistlink =   
         &Apache::loncommon::start_page('Set link to wishlist',undef,  
        {'only_body' => 1,  
  'js_ready'  => 1,  
  '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('Save to Stored Links').'</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
 sub makePageSet {  sub makePageSet {
     # start_page       # start_page 
     my $startPage = &Apache::loncommon::start_page('Wishlist',undef,      my $startPage = &Apache::loncommon::start_page('Stored Links',undef,
                                                    {'only_body' => 1});                                                     {'only_body' => 1});
           
     # confirm success and offer link to wishlist      # 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);      $message = &Apache::loncommon::confirmwrapper($message);
   
     my $inner .= '<br>'.$message.'<br/><br/>'.      my $inner .= '<br>'.$message.'<br/><br/>'.
                  '<a href="javascript:;" onclick="opener.open('."'/adm/wishlist'".');window.close();">'.&mt('Go to wishlist').'</a>'.                   '<a href="javascript:;" onclick="opener.open('."'/adm/wishlist'".');window.close();">'.&mt('Go to Stored Links').'</a>'.('&nbsp;' x 3).
                  '&nbsp;<a href="javascript:;" onclick="window.close();">'.&mt('Close this window').'</a>';                   '<a href="javascript:;" onclick="window.close();">'.&mt('Close this window').'</a>';
   
     # end_page       # end_page 
     my $endPage =  &Apache::loncommon::end_page();      my $endPage =  &Apache::loncommon::end_page();
Line 1780  sub makePageImport { Line 1772  sub makePageImport {
     $root = $rootgiven;      $root = $rootgiven;
     @childrenRt = $root->children();      @childrenRt = $root->children();
     # start_page       # start_page 
     my $startPage = &Apache::loncommon::start_page('Wishlist',undef,      my $startPage = &Apache::loncommon::start_page('Stored Links',undef,
                                                    {'only_body' => 1});                                                     {'only_body' => 1});
           
     # get javascript-code for wishlist-interactions      # get javascript-code for wishlist-interactions
     my $js = &JSforWishlist();      my $js = &JSforWishlist();
     $js .= &JSforImport($rat);      $js .= &JSforImport($rat);
   
     my $inner = '<h1>'.&mt('Import Resources from Wishlist').'</h1>';      my $inner = '<h1>'.&mt('Import Resources from Stored Links').'</h1>';
     if (!$rat) {      if (!$rat) {
         $inner .= '<p><span class="LC_info">'.&mt("Please note that you  can use the checkboxes corresponding to a folder to ".          $inner .= '<p><span class="LC_info">'.&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. ".                                                    "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.").'</span></p>';                                                    "All checked links will be imported into the current folder of your course.").'</span></p>';
     }      }
     else {      else {
         $inner .= '<p><span class="LC_info">'.&mt("Please note that you  can use the checkboxes corresponding to a folder to ".          $inner .= '<p><span class="LC_info">'.&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. ")                                                    "easily check all links within this folder. The folder structure itself can't be imported. ")
                                                   .'</span></p>';                                                    .'</span></p>';
     }      }
Line 1812  sub makePageImport { Line 1804  sub makePageImport {
         $fnum = (keys %wishlist)-1;          $fnum = (keys %wishlist)-1;
     }      }
   
     $inner .= '<form method="post" name="groupsort">'.      $inner .= '<form method="post" name="groupsort" action="">'.
               '<input type="hidden" value="'.$fnum.'" name="fnum">'.                '<input type="hidden" value="'.$fnum.'" name="fnum" />'.
               '<input type="button" onclick="javascript:checkAll()" id="checkallbutton" value="'.&mt('Check All').'">'.                '<input type="button" onclick="javascript:checkAll()" id="checkallbutton" value="'.&mt('Check All').'" />'.
               '<input type="button" onclick="javascript:uncheckAll()" id="uncheckallbutton" value="'.&mt('Uncheck All').'">'.                '<input type="button" onclick="javascript:uncheckAll()" id="uncheckallbutton" value="'.&mt('Uncheck All').'" />'.
               '<input type="button" value="'.&mt('Import Checked').'" onclick="finish_import();">'.                    '<input type="button" value="'.&mt('Import Checked').'" onclick="finish_import();" />'.    
               '<input type="button" value="'.&mt('Cancel').'" onclick="window.close();"><br/><br/>';                 '<input type="button" value="'.&mt('Cancel').'" onclick="window.close();" /><br/><br/>'; 
   
           
     # wishlist-table      # wishlist-table
Line 1826  sub makePageImport { Line 1818  sub makePageImport {
         $inner .= '<table class="LC_data_table LC_tableOfContent">'.$wishlistHTMLimport.'</table>';          $inner .= '<table class="LC_data_table LC_tableOfContent">'.$wishlistHTMLimport.'</table>';
     }      }
     else {      else {
         $inner .= '<span class="LC_info">'.&mt("Your wishlist ist currently empty.").'</span>';          $inner .= '<span class="LC_info">'.&mt("Your Stored Links list is currently empty.").'</span>';
     }      }
     $wishlistHTMLimport = '';      $wishlistHTMLimport = '';
   
Line 1848  sub makeErrorPage { Line 1840  sub makeErrorPage {
     &Apache::lonhtmlcommon::add_breadcrumb(      &Apache::lonhtmlcommon::add_breadcrumb(
               { href => '/adm/wishlist',                { href => '/adm/wishlist',
                 text => 'Wishlist'});                  text => 'Wishlist'});
     my $startPage = &Apache::loncommon::start_page('Wishlist');      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();      &Apache::lonhtmlcommon::clear_breadcrumbs();
   
     # error-message      # error-message

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


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