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

version 1.14, 2012/05/22 16:31:38 version 1.15, 2012/06/07 02:28:04
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 1336  my $wishlistHTMLimport; Line 1344  my $wishlistHTMLimport;
 my $indent = $indentConst;  my $indent = $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 '') {
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-$indentConst)<=0?$indentConst:$indent).'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 1398  sub wishlistImport { Line 1437  sub wishlistImport {
         my @children = $n->children();          my @children = $n->children();
         if ($#children >=0) {          if ($#children >=0) {
             $indent += 20;              $indent += 20;
             &wishlistImport(\@children);              &wishlistImport(\@children,$numskipped);
             $indent -= 20;              $indent -= 20;
         }          }
     }      }
       return;
 }  }
   
 # Returns the HTML-Markup for wishlist  # Returns the HTML-Markup for wishlist
Line 1786  sub makePageImport { Line 1826  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 1864  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>';

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


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