Diff for /loncom/interface/lonwishlist.pm between versions 1.14 and 1.18

version 1.14, 2012/05/22 16:31:38 version 1.18, 2013/06/18 13:23:42
Line 50  use Apache::lonnet; Line 50  use Apache::lonnet;
 use Apache::loncommon();  use Apache::loncommon();
 use Apache::lonhtmlcommon;  use Apache::lonhtmlcommon;
 use Apache::lonlocal;  use Apache::lonlocal;
 use LONCAPA;  use LONCAPA qw(:DEFAULT :match);
 use Tree;  use Tree;
   
   
Line 466  sub getNodesToArray { Line 466  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).            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".       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)  =item * &makePage(mode, marked)
   
Line 810  sub JSforWishlist { Line 812  sub JSforWishlist {
   
     function setChecked(row,checked) {      function setChecked(row,checked) {
         var childCHECK = document.getElementById(row.id.replace('row','check'));          var childCHECK = document.getElementById(row.id.replace('row','check'));
         childCHECK.checked = checked;          if (!childCHECK.disabled) {
               childCHECK.checked = checked;
           }
     }      }
   
     function getPreviousFolderRows(row) {      function getPreviousFolderRows(row) {
Line 1010  sub JSforWishlist { Line 1014  sub JSforWishlist {
     function checkAll() {      function checkAll() {
         var checkboxes = document.getElementsByName('check');          var checkboxes = document.getElementsByName('check');
         for (var i = 0; i < checkboxes.length; i++) {          for (var i = 0; i < checkboxes.length; i++) {
             checkboxes[i].checked = "checked";              if (!checkboxes[i].disabled) {
                   checkboxes[i].checked = "checked";
               }
         }          }
     }      }
   
     function uncheckAll() {      function uncheckAll() {
         var checkboxes = document.getElementsByName('check');          var checkboxes = document.getElementsByName('check');
         for (var i = 0; i < checkboxes.length; i++) {          for (var i = 0; i < checkboxes.length; i++) {
             checkboxes[i].checked = "";              if (!checkboxes[i].disabled) {
                   checkboxes[i].checked = "";
               }
         }          }
     }      }
   
Line 1090  JAVASCRIPT Line 1098  JAVASCRIPT
   
 # HTML-Markup for table if in view-mode  # HTML-Markup for table if in view-mode
 my $wishlistHTMLview;  my $wishlistHTMLview;
 my $indent = $indentConst;  my $indent_view = $indentConst;
 sub wishlistView {  sub wishlistView {
     my $nodes = shift;      my $nodes = shift;
   
Line 1109  sub wishlistView { Line 1117  sub wishlistView {
   
         # entry is a folder          # entry is a folder
         if ($n->value()->path() eq '') {          if ($n->value()->path() eq '') {
             $wishlistHTMLview .= '<td id="padd'.$index.'" style="padding-left:'.(($indent-$indentConst)<0?0:($indent-$indentConst)).'px; min-width: 220px;">'.              $wishlistHTMLview .= '<td id="padd'.$index.'" style="padding-left:'.(($indent_view-$indentConst)<0?0:($indent_view-$indentConst)).'px; min-width: 220px;">'.
                                  '<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"/>'.                                   '<img src="/adm/lonIcons/navmap.folder.closed.gif" id="imgFolder'.$index.'" alt="folder"/>'.
Line 1117  sub wishlistView { Line 1125  sub wishlistView {
         }          }
         # entry is a link          # entry is a link
         else {          else {
             $wishlistHTMLview .= '<td id="padd'.$index.'" style="padding-left:'.(($indent-$indentConst)<=0?$indentConst:$indent).'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('."'".$n->value()->path()."'".');">'.
                                  '<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 1147  sub wishlistView { Line 1155  sub wishlistView {
         # if the entry is a folder, it could have other entries as content. if it has, call wishlistView for those entries           # if the entry is a folder, it could have other entries as content. if it has, call wishlistView for those entries 
         my @children = $n->children();          my @children = $n->children();
         if ($#children >=0) {          if ($#children >=0) {
             $indent += 20;              $indent_view += 20;
             &wishlistView(\@children);              &wishlistView(\@children);
             $indent -= 20;              $indent_view -= 20;
         }          }
     }      }
 }  }
Line 1157  sub wishlistView { Line 1165  sub wishlistView {
   
 # HTML-Markup for table if in edit-mode  # HTML-Markup for table if in edit-mode
 my $wishlistHTMLedit;  my $wishlistHTMLedit;
 my $indent = $indentConst;  my $indent_edit = $indentConst;
 sub wishlistEdit {  sub wishlistEdit {
     my $nodes = shift;      my $nodes = shift;
     my $curNode = 1;      my $curNode = 1;
Line 1192  sub wishlistEdit { Line 1200  sub wishlistEdit {
         if ($n->value()->path() eq '') {          if ($n->value()->path() eq '') {
             $wishlistHTMLedit .= '<td><select class="LC_hidden" name="sel" id="sel'.$index.'" onchange="submitSelect();">'.              $wishlistHTMLedit .= '<td><select class="LC_hidden" name="sel" id="sel'.$index.'" onchange="submitSelect();">'.
                                  $options.'</select></td>'.                                   $options.'</select></td>'.
                                  '<td id="padd'.$index.'" style="padding-left:'.(($indent-$indentConst)<0?0:($indent-$indentConst)).'px;">'.                                   '<td id="padd'.$index.'" style="padding-left:'.(($indent_edit-$indentConst)<0?0:($indent_edit-$indentConst)).'px;">'.
                                  '<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>'.
Line 1204  sub wishlistEdit { Line 1212  sub wishlistEdit {
         else {          else {
             $wishlistHTMLedit .= '<td><select class="LC_hidden" name="sel" id="sel'.$index.'" onchange="submitSelect();">'.              $wishlistHTMLedit .= '<td><select class="LC_hidden" name="sel" id="sel'.$index.'" onchange="submitSelect();">'.
                                  $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_edit-$indentConst)<=0?$indentConst:$indent_edit).'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>';
Line 1234  sub wishlistEdit { Line 1242  sub wishlistEdit {
         # if the entry is a folder, it could have other entries as content. if it has, call wishlistEdit for those entries           # if the entry is a folder, it could have other entries as content. if it has, call wishlistEdit for those entries 
         my @children = $n->children();          my @children = $n->children();
         if ($#children >=0) {          if ($#children >=0) {
             $indent += 20;              $indent_edit += 20;
             &wishlistEdit(\@children);              &wishlistEdit(\@children);
             $indent -= 20;              $indent_edit -= 20;
         }          }
     }      }
 }  }
Line 1246  sub wishlistEdit { Line 1254  sub wishlistEdit {
 # HTML-Markup for table if in move-mode  # HTML-Markup for table if in move-mode
 my $wishlistHTMLmove ='<tr id="root" class="LC_odd_row"><td><input type="radio" name="mark" id="radioRoot" value="root" /></td>'.  my $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>';
 my $indent = $indentConst;  my $indent_move = $indentConst;
 sub wishlistMove {  sub wishlistMove {
     my $nodes = shift;      my $nodes = shift;
     my $marked = shift;      my $marked = shift;
Line 1270  sub wishlistMove { Line 1278  sub wishlistMove {
             # display a radio-button, if the folder was not selected to be moved              # display a radio-button, if the folder was not selected to be moved
             if (!$isIn) {              if (!$isIn) {
                 $wishlistHTMLmove .= '<td><input type="radio" name="mark" id="radio'.$index.'" value="'.$index.'" /></td>'.                  $wishlistHTMLmove .= '<td><input type="radio" name="mark" id="radio'.$index.'" value="'.$index.'" /></td>'.
                                      '<td id="padd'.$index.'" style="padding-left:'.(($indent-$indentConst)<0?0:($indent-$indentConst)).'px; min-width: 220px;">';                                       '<td id="padd'.$index.'" style="padding-left:'.(($indent_move-$indentConst)<0?0:($indent_move-$indentConst)).'px; min-width: 220px;">';
             }              }
             # highlight the title, if the folder was selected to be moved              # highlight the title, if the folder was selected to be moved
             else {              else {
                 $wishlistHTMLmove .= '<td></td>'.                  $wishlistHTMLmove .= '<td></td>'.
                                      '<td id="padd'.$index.'" style="padding-left:'.(($indent-$indentConst)<0?0:($indent-$indentConst)).'px; min-width: 220px;'.                                       '<td id="padd'.$index.'" style="padding-left:'.(($indent_move-$indentConst)<0?0:($indent_move-$indentConst)).'px; min-width: 220px;'.
                                      'color:red;">';                                       'color:red;">';
             }              }
             #arrow- and folder-image, all folders are open, and title              #arrow- and folder-image, all folders are open, and title
Line 1292  sub wishlistMove { Line 1300  sub wishlistMove {
             }              }
             # link-image and title              # link-image and title
             $wishlistHTMLmove .= '<td></td>'.              $wishlistHTMLmove .= '<td></td>'.
                                  '<td id="padd'.$index.'" style="padding-left:'.(($indent-$indentConst)<=0?$indentConst:$indent).'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('."'".$n->value()->path()."'".');" '.$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 1322  sub wishlistMove { Line 1330  sub wishlistMove {
         # if the entry is a folder, it could have other entries as content. if it has, call wishlistMove for those entries           # if the entry is a folder, it could have other entries as content. if it has, call wishlistMove for those entries 
         my @children = $n->children();          my @children = $n->children();
         if ($#children >=0) {          if ($#children >=0) {
             $indent += 20;              $indent_move += 20;
             &wishlistMove(\@children, $marked);              &wishlistMove(\@children, $marked);
             $indent -= 20;              $indent_move -= 20;
         }          }
     }      }
 }  }
Line 1333  sub wishlistMove { Line 1341  sub wishlistMove {
   
 # HTML-Markup for table if in import-mode  # HTML-Markup for table if in import-mode
 my $wishlistHTMLimport;  my $wishlistHTMLimport;
 my $indent = $indentConst;  my $indent_imp = $indentConst;
 my $form = 1;  my $form = 1;
 sub wishlistImport {  sub wishlistImport {
     my $nodes = shift;      my ($nodes,$numskipped) = @_;
   
       my ($is_community,%nopick);
       if ($env{'request.course.id'}) {
           if (&Apache::loncommon::course_type() eq 'Community') {
               $is_community = 1;
           }
       }
   
     foreach my $n (@$nodes) {      foreach my $n (@$nodes) {
         my $index = $n->value()->nindex();          my $index = $n->value()->nindex();
           if ($n->value()->path() =~ m{^(/res/$match_domain/$match_username/)}) {
               if ($is_community) {
                   unless (&Apache::lonnet::allowed('bro',$n->value()->path())) {
                       $nopick{$n->value()->path()} = $n->value()->title();
                       $$numskipped ++;
                   }
               } else {
                   unless (&Apache::lonnet::allowed('bre',$n->value()->path())) {
                       $nopick{$n->value()->path()} = $n->value()->title();
                       $$numskipped ++;
                   }
               }
           }
   
         # start row, use data_table routines to set class to LC_even or LC_odd automatically. this row contains a checkbox, the title and the note-icon.          # start row, use data_table routines to set class to LC_even or LC_odd automatically. this row contains a checkbox, the title and the note-icon.
         # only display the top level entries on load          # only display the top level entries on load
Line 1348  sub wishlistImport { Line 1376  sub wishlistImport {
   
     
         # checkboxes          # checkboxes
         $wishlistHTMLimport .= '<td>'.          $wishlistHTMLimport .= '<td>';
                                '<input type="checkbox" name="check" id="check'.$index.'" value="'.$index.'" '.          my ($disabled,$onclick,$image,$style);
                                'onclick="selectAction('."'row".$index."'".')" />'.          if ($nopick{$n->value()->path()}) {
               $disabled = ' disabled="disabled"';
               $image = 'wishlist-link-lighter.png';
               $style = 'style="color:#808080;"';
           } else {
               $onclick = ' onclick="selectAction('."'row".$index."'".')"';
               $image = 'wishlist-link.png';
           }
           $wishlistHTMLimport .= '<input type="checkbox" name="check" id="check'.$index.'" value="'.$index.'" '.
                                  $disabled.$onclick.' />'.
                                '<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>';          $wishlistHTMLimport .= '</td>';
   
         # entry is a folder          # entry is a folder
         if ($n->value()->path() eq '') {          if ($n->value()->path() eq '') {
             $wishlistHTMLimport .= '<td id="padd'.$index.'" style="padding-left:'.(($indent-$indentConst)<0?0:($indent-$indentConst)).'px; min-width: 220px;">'.              $wishlistHTMLimport .= '<td id="padd'.$index.'" style="padding-left:'.(($indent_imp-$indentConst)<0?0:($indent_imp-$indentConst)).'px; min-width: 220px;">'.
                                    '<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"/>'.                                     '<img src="/adm/lonIcons/navmap.folder.closed.gif" id="imgFolder'.$index.'" alt="folder"/>'.
Line 1366  sub wishlistImport { Line 1403  sub wishlistImport {
         }          }
         # entry is a link          # entry is a link
         else {          else {
             $wishlistHTMLimport .= '<td id="padd'.$index.'" style="padding-left:'.(($indent-$indentConst)<=0?$indentConst:$indent).'px; min-width: 220px;">'.              $wishlistHTMLimport .= '<td id="padd'.$index.'" style="padding-left:'.(($indent_imp-$indentConst)<=0?$indentConst:$indent_imp).'px; min-width: 220px;">';
                                    '<a href="javascript:preview('."'".$n->value()->path()."'".');">'.              unless ($nopick{$n->value()->path()}) {
                                    '<img src="/res/adm/pages/wishlist-link.png" id="img'.$index.'" alt="link" />'.                  $wishlistHTMLimport .= '<a href="javascript:preview('."'".$n->value()->path()."'".');">';
                                    $n->value()->title().'</a></td>';              }
               $wishlistHTMLimport .= '<img src="/res/adm/pages/'.$image.'" id="img'.$index.'" alt="link" />'.
                                      '<span '.$style.'>'.$n->value()->title().'</span></a></td>';
                                    $form++;                                     $form++;
         }          }
   
Line 1397  sub wishlistImport { Line 1436  sub wishlistImport {
         # if the entry is a folder, it could have other entries as content. if it has, call wishlistImport for those entries           # if the entry is a folder, it could have other entries as content. if it has, call wishlistImport for those entries 
         my @children = $n->children();          my @children = $n->children();
         if ($#children >=0) {          if ($#children >=0) {
             $indent += 20;              $indent_imp += 20;
             &wishlistImport(\@children);              &wishlistImport(\@children,$numskipped);
             $indent -= 20;              $indent_imp -= 20;
         }          }
     }      }
       return;
 }  }
   
 # Returns the HTML-Markup for wishlist  # Returns the HTML-Markup for wishlist
Line 1746  SCRIPT Line 1786  SCRIPT
   
 # 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       my $title = 'Stored Links';
     my $startPage = &Apache::loncommon::start_page('Stored Links',undef,  
                                                    {'only_body' => 1});      # start_page
       my $output =
           &Apache::loncommon::start_page($title,undef,
                                          {'only_body' => 1})
          .'<h1>'.&mt($title).'</h1>';
           
     # confirm success and offer link to wishlist      # confirm success and offer link to wishlist
     my $message = &Apache::lonhtmlcommon::confirm_success(&mt('Link successfully saved!'));      $output .=
     $message = &Apache::loncommon::confirmwrapper($message);          &Apache::loncommon::confirmwrapper(
               &Apache::lonhtmlcommon::confirm_success(
     my $inner .= '<br>'.$message.'<br/><br/>'.                  &mt('Link successfully saved!')))
                  '<a href="javascript:;" onclick="opener.open('."'/adm/wishlist'".');window.close();">'.&mt('Go to Stored Links').'</a>'.('&nbsp;' x 3).         .&Apache::lonhtmlcommon::actionbox(
                  '<a href="javascript:;" onclick="window.close();">'.&mt('Close this window').'</a>';              ['<a href="javascript:;" onclick="opener.open('."'/adm/wishlist'".');window.close();">'.&mt('Go to Stored Links').'</a>',
                '<a href="javascript:;" onclick="window.close();">'.&mt('Close this window').'</a>'
               ]);
   
     # end_page       # end_page 
     my $endPage =  &Apache::loncommon::end_page();      $output .= &Apache::loncommon::end_page();
   
     # put all page-elements together  
     my $page = $startPage.$inner.$endPage;  
   
     return $page;      return $output;
 }  }
   
   
Line 1786  sub makePageImport { Line 1829  sub makePageImport {
     my $inner = '<h1>'.&mt('Import Resources from Stored Links').'</h1>';      my $inner = '<h1>'.&mt('Import Resources from Stored Links').'</h1>';
     if (!$rat) {      if (!$rat) {
         $inner .=          $inner .=
             '<p class="LC_info">'.              '<ul>'.
             &mt('Please note that you can use the checkboxes corresponding to a folder to '.              '<li class="LC_info">'.&mt('Use the checkboxes corresponding to a folder to '.
                 'easily check all links within this folder.'.                  'easily check all links within the folder.').'</li>'.
                 ' The folder structure itself cannot be imported.').              '<li class="LC_info">'.&mt('The folder structure itself cannot be imported.').'</li>'.
             ' '.&mt('All checked links will be imported into the current folder of your course.').              '<li class="LC_info">'.&mt('All checked links will be imported into the current folder of your course.').'</li>'.
             '</p>';              '</ul>';
     }      }
     else {      else {
         $inner .=          $inner .=
             '<p class="LC_info">'.              '<ul>'.
             &mt('Please note that you can use the checkboxes corresponding to a folder to '.              '<li class="LC_info">'.&mt('Use the checkboxes corresponding to a folder to '.
                 'easily check all links within this folder.'.                  'easily check all links within this folder.').'</li>'.
                 ' The folder structure itself cannot be imported.').              '<li class="LC_info">'.&mt('The folder structure itself cannot be imported.').'</li>'.
             '</p>';              '</ul>';
     }      }
     my %wishlist = &getWishlist();      my %wishlist = &getWishlist();
   
Line 1824  sub makePageImport { Line 1867  sub makePageImport {
   
           
     # wishlist-table      # wishlist-table
     &wishlistImport(\@childrenRt);      my $numskipped = 0;
       &wishlistImport(\@childrenRt,\$numskipped);
     if ($wishlistHTMLimport ne '') {      if ($wishlistHTMLimport ne '') {
         $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 Stored Links list is currently empty.").'</span>';          $inner .= '<span class="LC_info">'.&mt("Your Stored Links list is currently empty.").'</span>';
     }      }
       if ($numskipped > 0) {
           $inner .= '<p class="LC_info">'.&mt('Note: where a Stored Link is unavailable for import in the current context it is grayed out.').'</p>';
       }
     $wishlistHTMLimport = '';      $wishlistHTMLimport = '';
   
     $inner .= '</form>';      $inner .= '</form>';
Line 1850  sub makeErrorPage { Line 1897  sub makeErrorPage {
     # breadcrumbs and start_page       # breadcrumbs and start_page 
     &Apache::lonhtmlcommon::add_breadcrumb(      &Apache::lonhtmlcommon::add_breadcrumb(
               { href => '/adm/wishlist',                { href => '/adm/wishlist',
                 text => 'Wishlist'});                  text => 'Stored Links'});
     my $startPage = &Apache::loncommon::start_page('Stored Links');      my $startPage = &Apache::loncommon::start_page('Stored Links');
           
     my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs(&mt('Stored Links').&Apache::loncommon::help_open_topic('Wishlist'));      my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs(&mt('Stored Links').&Apache::loncommon::help_open_topic('Wishlist'));

Removed from v.1.14  
changed lines
  Added in v.1.18


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