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>'.(' ' 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(); |