Diff for /loncom/interface/lonwishlist.pm between versions 1.16 and 1.22

version 1.16, 2012/08/01 19:07:51 version 1.22, 2014/05/31 16:01:33
Line 197  sub newEntry() { Line 197  sub newEntry() {
     my $date = gmtime();      my $date = gmtime();
     # Create Entry-Object      # Create Entry-Object
     my $entry = Entry->new(title => $title, path => $path, note => $note, date => $date);      my $entry = Entry->new(title => $title, path => $path, note => $note, date => $date);
     # Create Tree-Object, this correspones a node in the wishlist-tree      # Create Tree-Object, this corresponds a node in the wishlist-tree
     my $tree = Tree->new($entry);      my $tree = Tree->new($entry);
     # Add this node to wishlist-tree      # Add this node to wishlist-tree
     my $folderIndex = $env{'form.folders'};      my $folderIndex = $env{'form.folders'};
Line 1042  sub JSforImport{ Line 1042  sub JSforImport{
         function finish_import() {          function finish_import() {
             opener.document.forms.simpleedit.importdetail.value='';              opener.document.forms.simpleedit.importdetail.value='';
             for (var num = 0; num < document.forms.groupsort.fnum.value; num++) {              for (var num = 0; num < document.forms.groupsort.fnum.value; num++) {
                   try {
                       eval("document.forms.groupsort.filelink"+num+".value");
                   }
                   catch(err) {
                      continue;
                   }
                 if (eval("document.forms.groupsort.check"+num+".checked") && eval("document.forms.groupsort.filelink"+num+".value") != '') {                  if (eval("document.forms.groupsort.check"+num+".checked") && eval("document.forms.groupsort.filelink"+num+".value") != '') {
                     opener.document.forms.simpleedit.importdetail.value+='&'+                      opener.document.forms.simpleedit.importdetail.value+='&'+
                     eval("document.forms.groupsort.title"+num+".value")+'='+                      eval("document.forms.groupsort.title"+num+".value")+'='+
Line 1098  JAVASCRIPT Line 1104  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 1117  sub wishlistView { Line 1123  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 1125  sub wishlistView { Line 1131  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 1155  sub wishlistView { Line 1161  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 1165  sub wishlistView { Line 1171  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 1200  sub wishlistEdit { Line 1206  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 1212  sub wishlistEdit { Line 1218  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 1242  sub wishlistEdit { Line 1248  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 1254  sub wishlistEdit { Line 1260  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 1278  sub wishlistMove { Line 1284  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 1300  sub wishlistMove { Line 1306  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 1330  sub wishlistMove { Line 1336  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 1341  sub wishlistMove { Line 1347  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,$numskipped) = @_;      my ($nodes,$numskipped) = @_;
Line 1355  sub wishlistImport { Line 1361  sub wishlistImport {
   
     foreach my $n (@$nodes) {      foreach my $n (@$nodes) {
         my $index = $n->value()->nindex();          my $index = $n->value()->nindex();
   
           #
           # Determine which resources in stored links may be imported into a course/community.
           # (a) Import of directories in /res space is not supported.
           # (b) Import of a resource into a community requires user has 'bro' privilege for resource
           #     (i.e., user has author or co-author role for corresponcding Authoring Space).
           # (c) Import of a resource into a course requires user has 'be' privilege for resource.
           #
   
         if ($n->value()->path() =~ m{^(/res/$match_domain/$match_username/)}) {          if ($n->value()->path() =~ m{^(/res/$match_domain/$match_username/)}) {
             if ($is_community) {              if ($n->value()->path() =~ m{/$}) {
                 unless (&Apache::lonnet::allowed('bro',$n->value()->path())) {                  $nopick{$n->value()->path()} = $n->value()->title();
                     $nopick{$n->value()->path()} = $n->value()->title();                  $$numskipped ++;
                     $$numskipped ++;  
                 }  
             } else {              } else {
                 unless (&Apache::lonnet::allowed('bre',$n->value()->path())) {                  if ($is_community) {
                     $nopick{$n->value()->path()} = $n->value()->title();                      unless (&Apache::lonnet::allowed('bro',$n->value()->path())) {
                     $$numskipped ++;                          $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 ++;
                       }
                 }                  }
             }              }
         }          }
Line 1395  sub wishlistImport { Line 1415  sub wishlistImport {
   
         # 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 1403  sub wishlistImport { Line 1423  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;">';
             unless ($nopick{$n->value()->path()}) {              unless ($nopick{$n->value()->path()}) {
                 $wishlistHTMLimport .= '<a href="javascript:preview('."'".$n->value()->path()."'".');">';                  $wishlistHTMLimport .= '<a href="javascript:preview('."'".$n->value()->path()."'".');">';
             }              }
Line 1436  sub wishlistImport { Line 1456  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,$numskipped);              &wishlistImport(\@children,$numskipped);
             $indent -= 20;              $indent_imp -= 20;
         }          }
     }      }
     return;      return;
Line 1463  sub makePage { Line 1483  sub makePage {
                                                         'onload' => 'javascript:onLoadAction('."'".$mode."'".');',                                                          'onload' => 'javascript:onLoadAction('."'".$mode."'".');',
                                                         'onunload' => 'javascript:window.name = '."'loncapaclient'"}});                                                          'onunload' => 'javascript:window.name = '."'loncapaclient'"}});
   
     my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs(&mt('Stored Links').&Apache::loncommon::help_open_topic('Wishlist'));      my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs(&mt('Stored Links'),'Wishlist');
   
     # get javascript-code for wishlist-interactions      # get javascript-code for wishlist-interactions
     my $js = &JSforWishlist();      my $js = &JSforWishlist();
Line 1786  SCRIPT Line 1806  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 1897  sub makeErrorPage { Line 1920  sub makeErrorPage {
                 text => 'Stored Links'});                  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'),'Wishlist');
     &Apache::lonhtmlcommon::clear_breadcrumbs();      &Apache::lonhtmlcommon::clear_breadcrumbs();
   
     # error-message      # error-message
     my $inner .= '<span class="LC_error">'.&mt('An error occurred! Please try again later.').'</span>';      my $inner .= '<p class="LC_error">'.&mt('An error occurred! Please try again later.').'</p>';
   
     # end_page       # end_page 
     my $endPage =  &Apache::loncommon::end_page();      my $endPage =  &Apache::loncommon::end_page();

Removed from v.1.16  
changed lines
  Added in v.1.22


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