RFE 654257 - user-separated clipboard and trash
This commit is contained in:
parent
1a3900d494
commit
7642295d20
10 changed files with 815 additions and 59 deletions
335
lib/WebGUI/Operation/Clipboard.pm
Normal file
335
lib/WebGUI/Operation/Clipboard.pm
Normal file
|
|
@ -0,0 +1,335 @@
|
|||
package WebGUI::Operation::Clipboard;
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
# WebGUI is Copyright 2001-2003 Plain Black LLC.
|
||||
#-------------------------------------------------------------------
|
||||
# Please read the legal notices (docs/legal.txt) and the license
|
||||
# (docs/license.txt) that came with this distribution before using
|
||||
# this software.
|
||||
#-------------------------------------------------------------------
|
||||
# http://www.plainblack.com info@plainblack.com
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
use Exporter;
|
||||
use strict;
|
||||
use WebGUI::DateTime;
|
||||
use WebGUI::Grouping;
|
||||
use WebGUI::HTMLForm;
|
||||
use WebGUI::Icon;
|
||||
use WebGUI::International;
|
||||
use WebGUI::Operation::Shared;
|
||||
use WebGUI::Page;
|
||||
use WebGUI::Privilege;
|
||||
use WebGUI::Session;
|
||||
use WebGUI::SQL;
|
||||
use WebGUI::TabForm;
|
||||
use WebGUI::URL;
|
||||
use WebGUI::Utility;
|
||||
|
||||
our @ISA = qw(Exporter);
|
||||
our @EXPORT = qw(&www_deleteClipboardItem &www_deleteClipboardItemConfirm
|
||||
&www_emptyClipboard &www_emptyClipboardConfirm &www_manageClipboard);
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub _submenu {
|
||||
my (%menu);
|
||||
tie %menu, 'Tie::IxHash';
|
||||
$menu{WebGUI::URL::page('op=manageClipboard')} = WebGUI::International::get(949);
|
||||
$menu{WebGUI::URL::page('op=emptyClipboard')} = WebGUI::International::get(950);
|
||||
if ( ($session{setting}{sharedClipboard} ne "1") && (WebGUI::Privilege::isInGroup(3)) ) {
|
||||
$menu{WebGUI::URL::page('op=manageClipboard&systemClipboard=1')} = WebGUI::International::get(954);
|
||||
$menu{WebGUI::URL::page('op=emptyClipboard&systemClipboard=1')} = WebGUI::International::get(959);
|
||||
}
|
||||
return menuWrapper($_[0],\%menu);
|
||||
}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_deleteClipboardItem {
|
||||
return WebGUI::Privilege::insufficient() unless (WebGUI::Privilege::isInGroup(4));
|
||||
my ($output);
|
||||
if ($session{form}{wid} ne "") {
|
||||
$output .= helpIcon(14);
|
||||
} elsif ($session{form}{pageId} ne "") {
|
||||
$output .= helpIcon(3);
|
||||
}
|
||||
$output .= '<h1>'.WebGUI::International::get(42).'</h1>';
|
||||
$output .= WebGUI::International::get(956).'<p>';
|
||||
if ($session{form}{wid} ne "") {
|
||||
$output .= '<div align="center"><a href="'.WebGUI::URL::page('op=deleteClipboardItemConfirm&wid='
|
||||
.$session{form}{wid}) . '">'.WebGUI::International::get(44).'</a>';
|
||||
} elsif ($session{form}{pageId} ne "") {
|
||||
$output .= '<div align="center"><a href="'.WebGUI::URL::page('op=deleteClipboardItemConfirm&pageId='
|
||||
.$session{form}{pageId}) . '">'.WebGUI::International::get(44).'</a>';
|
||||
}
|
||||
$output .= ' <a href="'.WebGUI::URL::page().'">'
|
||||
.WebGUI::International::get(45).'</a></div>';
|
||||
return $output;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_deleteClipboardItemConfirm {
|
||||
return WebGUI::Privilege::insufficient() unless (WebGUI::Privilege::isInGroup(4));
|
||||
if ($session{form}{wid} ne "") {
|
||||
if ( ($session{setting}{sharedClipboard} eq "1") || (WebGUI::Privilege::isInGroup(3)) ) {
|
||||
WebGUI::SQL->write("update wobject set pageId=3, "
|
||||
."bufferDate=".time().", "
|
||||
."bufferUserId=".$session{user}{userId} .", "
|
||||
."bufferPrevId=2 "
|
||||
."where pageId=2 "
|
||||
."and wobjectId=" . $session{form}{wid}
|
||||
);
|
||||
} else {
|
||||
WebGUI::SQL->write("update wobject set pageId=3, "
|
||||
."bufferDate=".time().", "
|
||||
."bufferUserId=".$session{user}{userId} .", "
|
||||
."bufferPrevId=2 "
|
||||
."where pageId=2 "
|
||||
."and wobjectId=" . $session{form}{wid} ." "
|
||||
."and bufferUserId=".$session{user}{userId}
|
||||
);
|
||||
}
|
||||
WebGUI::ErrorHandler::audit("moved wobject ". $session{form}{wid} ." from clipboard to trash");
|
||||
} elsif ($session{form}{pageId} ne "") {
|
||||
if ( ($session{setting}{sharedClipboard} eq "1") || (WebGUI::Privilege::isInGroup(3)) ) {
|
||||
WebGUI::SQL->write("update page set parentId=3, "
|
||||
."bufferDate=".time().", "
|
||||
."bufferUserId=".$session{user}{userId} .", "
|
||||
."bufferPrevId=2 "
|
||||
."where parentId=2 "
|
||||
."and pageId=".$session{form}{pageId}
|
||||
);
|
||||
} else {
|
||||
WebGUI::SQL->write("update page set parentId=3, "
|
||||
."bufferDate=".time().", "
|
||||
."bufferUserId=".$session{user}{userId} .", "
|
||||
."bufferPrevId=2 "
|
||||
."where parentId=2 "
|
||||
."and pageId=".$session{form}{pageId} ." "
|
||||
."and bufferUserId=".$session{user}{userId}
|
||||
);
|
||||
}
|
||||
WebGUI::ErrorHandler::audit("moved page ". $session{form}{pageId} ." from clipboard to trash");
|
||||
}
|
||||
WebGUI::Session::refreshPageInfo($session{page}{pageId},'op=manageClipboard');
|
||||
return "";
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_emptyClipboard {
|
||||
return WebGUI::Privilege::insufficient() unless (WebGUI::Privilege::isInGroup(4));
|
||||
my ($output);
|
||||
my $output = helpIcon(67);
|
||||
$output .= '<h1>'.WebGUI::International::get(42).'</h1>';
|
||||
$output .= WebGUI::International::get(951).'<p>';
|
||||
if ( ($session{setting}{sharedClipboard} ne "1") && (WebGUI::Privilege::isInGroup(3)) ) {
|
||||
$output .= '<div align="center"><a href="'.WebGUI::URL::page('op=emptyClipboardConfirm&systemClipboard=1')
|
||||
.'">'.WebGUI::International::get(44).'</a>';
|
||||
} else {
|
||||
$output .= '<div align="center"><a href="'.WebGUI::URL::page('op=emptyClipboardConfirm')
|
||||
.'">'.WebGUI::International::get(44).'</a>';
|
||||
}
|
||||
$output .= ' <a href="'.WebGUI::URL::page().'">'
|
||||
.WebGUI::International::get(45).'</a></div>';
|
||||
return $output;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_emptyClipboardConfirm {
|
||||
return WebGUI::Privilege::insufficient() unless (WebGUI::Privilege::isInGroup(4));
|
||||
my ($allUsers);
|
||||
if ($session{setting}{sharedClipboard} eq "1") {
|
||||
$allUsers = 1;
|
||||
} elsif ($session{form}{systemClipboard} eq "1") {
|
||||
return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
|
||||
$allUsers = 1;
|
||||
} else {
|
||||
$allUsers = 0;
|
||||
}
|
||||
if ($allUsers eq "1") {
|
||||
WebGUI::SQL->write("update page set parentId=3, "
|
||||
."bufferDate=".time().", "
|
||||
."bufferUserId=".$session{user}{userId} .", "
|
||||
."bufferPrevId=2 "
|
||||
."where parentId=2 ");
|
||||
WebGUI::SQL->write("update wobject set pageId=3, "
|
||||
."bufferDate=".time().", "
|
||||
."bufferUserId=".$session{user}{userId} .", "
|
||||
."bufferPrevId=2 "
|
||||
."where pageId=2 ");
|
||||
WebGUI::ErrorHandler::audit("emptied clipboard to trash");
|
||||
} else {
|
||||
WebGUI::SQL->write("update page set parentId=3, "
|
||||
."bufferDate=".time().", "
|
||||
."bufferUserId=".$session{user}{userId} .", "
|
||||
."bufferPrevId=2 "
|
||||
."where parentId=2 "
|
||||
."and bufferUserId=".$session{user}{userId});
|
||||
WebGUI::SQL->write("update wobject set pageId=3, "
|
||||
."bufferDate=".time().", "
|
||||
."bufferUserId=".$session{user}{userId} .", "
|
||||
."bufferPrevId=2 "
|
||||
."where pageId=2 "
|
||||
."and bufferUserId=".$session{user}{userId});
|
||||
WebGUI::ErrorHandler::audit("emptied user clipboard to trash");
|
||||
}
|
||||
WebGUI::Session::refreshPageInfo($session{page}{pageId});
|
||||
return "";
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_manageClipboard {
|
||||
return WebGUI::Privilege::insufficient() unless (WebGUI::Privilege::isInGroup(4));
|
||||
my ($sth, @data, @row, $i, $p, $allUsers);
|
||||
my $output = helpIcon(65);
|
||||
|
||||
if ($session{setting}{sharedClipboard} eq "1") {
|
||||
$allUsers = 1;
|
||||
$output .= '<h1>'. WebGUI::International::get(948) .'</h1>';
|
||||
} elsif ($session{form}{systemClipboard} eq "1") {
|
||||
return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
|
||||
$allUsers = 1;
|
||||
$output .= '<h1>'. WebGUI::International::get(955) .'</h1>';
|
||||
} else {
|
||||
$allUsers = 0;
|
||||
$output .= '<h1>'. WebGUI::International::get(948) .'</h1>';
|
||||
}
|
||||
|
||||
|
||||
|
||||
#
|
||||
# Generate list of pages
|
||||
#
|
||||
if ($allUsers) {
|
||||
$sth = WebGUI::SQL->read("select pageId,title,urlizedTitle,bufferUserId,bufferDate,bufferPrevId "
|
||||
."from page where parentId=2 order by bufferDate desc,bufferUserId");
|
||||
} else {
|
||||
$sth = WebGUI::SQL->read("select pageId,title,urlizedTitle,bufferUserId,bufferDate,bufferPrevId "
|
||||
."from page where parentId=2 and bufferUserId="
|
||||
. $session{user}{userId} . " order by bufferDate desc");
|
||||
}
|
||||
while (@data = $sth->array) {
|
||||
my ($pageId,$title,$urlizedTitle,$bufferUserId,$bufferDate,$bufferPrevId,$url);
|
||||
$pageId = $data[0];
|
||||
$title = $data[1];
|
||||
$urlizedTitle = $data[2];
|
||||
$title = '<a href="'. WebGUI::URL::gateway($urlizedTitle) .'">' .$title .'</a>';
|
||||
|
||||
$bufferUserId = $data[3];
|
||||
if ($bufferUserId ne "") {
|
||||
my ($bufferUsername) = WebGUI::SQL->quickArray("select username from users where userId=".$bufferUserId);
|
||||
$bufferUserId = '<a href="' .WebGUI::URL::page('op=viewProfile&uid='.$bufferUserId) .'">'
|
||||
.$bufferUsername .'</a>';
|
||||
}
|
||||
$bufferDate = epochToHuman($data[4]);
|
||||
$bufferPrevId = $data[5];
|
||||
if ($bufferPrevId ne "") {
|
||||
($bufferPrevId,$url) = WebGUI::SQL->quickArray("select title,urlizedTitle "
|
||||
."from page where pageId=".$bufferPrevId);
|
||||
if ($url ne "") {
|
||||
$bufferPrevId = '<a href="'. WebGUI::URL::gateway($url) .'">' .$bufferPrevId .'</a>';
|
||||
}
|
||||
}
|
||||
$row[$i] = '<tr>';
|
||||
$row[$i] .= '<td valign="top" class="tableData">'
|
||||
.pageIcon()
|
||||
.deleteIcon('op=deleteClipboardItem&pageId='.$pageId)
|
||||
.pasteIcon('op=pastePage&pageId='.$pageId);
|
||||
$row[$i] .= '</td>';
|
||||
$row[$i] .= '<td valign="top" class="tableData">'.$title;
|
||||
$row[$i] .= '</td>';
|
||||
$row[$i] .= '<td valign="top" class="tableData">'.WebGUI::International::get(2);
|
||||
$row[$i] .= '</td>';
|
||||
$row[$i] .= '<td valign="top" class="tableData">'.$bufferDate;
|
||||
$row[$i] .= '</td>';
|
||||
$row[$i] .= '<td valign="top" class="tableData">'.$bufferPrevId;
|
||||
$row[$i] .= '</td>';
|
||||
if ($allUsers) {
|
||||
$row[$i] .= '<td valign="top" class="tableData">'.$bufferUserId;
|
||||
$row[$i] .= '</td>';
|
||||
}
|
||||
$row[$i] .= '</tr>';
|
||||
$i++;
|
||||
}
|
||||
|
||||
#
|
||||
# Generate list of wobjects
|
||||
#
|
||||
if ($allUsers) {
|
||||
$sth = WebGUI::SQL->read("select wobjectId,namespace,title,bufferUserId,bufferDate,bufferPrevId "
|
||||
. "from wobject where pageId=2 order by bufferDate desc,bufferUserId");
|
||||
} else {
|
||||
$sth = WebGUI::SQL->read("select wobjectId,namespace,title,bufferUserId,bufferDate,bufferPrevId "
|
||||
. "from wobject where pageId=2 and bufferUserId="
|
||||
. $session{user}{userId} ." order by bufferDate desc");
|
||||
}
|
||||
while (@data = $sth->array) {
|
||||
my ($wobjectId,$namespace,$title,$bufferUserId,$bufferDate,$bufferPrevId,$url);
|
||||
|
||||
$wobjectId = $data[0];
|
||||
$namespace = $data[1];
|
||||
$title = $data[2];
|
||||
$title = '<a href="'. WebGUI::URL::page('func=view&wid='. $wobjectId) .'">'. $title .'</a>';
|
||||
|
||||
$bufferPrevId = $data[5];
|
||||
if ($bufferPrevId ne "") {
|
||||
($bufferPrevId,$url) = WebGUI::SQL->quickArray("select title,urlizedTitle "
|
||||
."from page where pageId=".$bufferPrevId);
|
||||
if ($url ne "") {
|
||||
$bufferPrevId = '<a href="'. WebGUI::URL::gateway($url) .'">' .$bufferPrevId .'</a>';
|
||||
}
|
||||
}
|
||||
$bufferDate = epochToHuman($data[4]);
|
||||
|
||||
$bufferUserId = $data[3];
|
||||
if ($bufferUserId ne "") {
|
||||
my ($bufferUsername) = WebGUI::SQL->quickArray("select username from users where userId=".$bufferUserId);
|
||||
$bufferUserId = '<a href="' .WebGUI::URL::page('op=viewProfile&uid='.$bufferUserId) .'">'
|
||||
.$bufferUsername .'</a>';
|
||||
}
|
||||
|
||||
$row[$i] = '<tr>';
|
||||
$row[$i] .= '<td valign="top" class="tableData">'
|
||||
.wobjectIcon()
|
||||
.deleteIcon('op=deleteClipboardItem&wid='.$wobjectId)
|
||||
.pasteIcon('func=paste&wid='.$wobjectId);
|
||||
$row[$i] .= '<td valign="top" class="tableData">'.$title;
|
||||
$row[$i] .= '</td>';
|
||||
$row[$i] .= '<td valign="top" class="tableData">'.$namespace;
|
||||
$row[$i] .= '</td>';
|
||||
$row[$i] .= '<td valign="top" class="tableData">'.$bufferDate;
|
||||
$row[$i] .= '</td>';
|
||||
$row[$i] .= '<td valign="top" class="tableData">'.$bufferPrevId;
|
||||
$row[$i] .= '</td>';
|
||||
if ($allUsers) {
|
||||
$row[$i] .= '<td valign="top" class="tableData">'.$bufferUserId;
|
||||
$row[$i] .= '</td>';
|
||||
}
|
||||
$row[$i] .= '</tr>';
|
||||
$i++;
|
||||
}
|
||||
$sth->finish;
|
||||
if ($session{form}{systemClipboard} eq "1") {
|
||||
$p = WebGUI::Paginator->new(WebGUI::URL::page('op=manageClipboard&systemClipboard=1'),\@row);
|
||||
} else {
|
||||
$p = WebGUI::Paginator->new(WebGUI::URL::page('op=manageClipboard'),\@row);
|
||||
}
|
||||
$output .= '<table border=1 cellpadding=5 cellspacing=0 align="center">';
|
||||
$output .= '<tr><th></th>'
|
||||
.'<th>'. WebGUI::International::get(99) .'</th>'
|
||||
.'<th>'. WebGUI::International::get(783) .'</th>'
|
||||
.'<th>'. WebGUI::International::get(952) .'</th>'
|
||||
.'<th>'. WebGUI::International::get(953) .'</th>';
|
||||
if ($allUsers) {
|
||||
$output .= '<th>'. WebGUI::International::get(50) .'</th>'
|
||||
.'</tr>';
|
||||
} else {
|
||||
$output .= '</tr>';
|
||||
}
|
||||
$output .= $p->getPage($session{form}{pn});
|
||||
$output .= '</table>';
|
||||
$output .= $p->getBarTraditional($session{form}{pn});
|
||||
return _submenu($output);
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
@ -173,7 +173,11 @@ sub www_cutPage {
|
|||
if ($session{page}{pageId} < 26) {
|
||||
return WebGUI::Privilege::vitalComponent();
|
||||
} elsif (WebGUI::Privilege::canEditPage()) {
|
||||
WebGUI::SQL->write("update page set parentId=2 where pageId=".$session{page}{pageId});
|
||||
WebGUI::SQL->write("update page set parentId=2, "
|
||||
."bufferUserId=".$session{user}{userId}.", "
|
||||
."bufferDate=".time().", "
|
||||
."bufferPrevId=".$session{page}{parentId}." "
|
||||
."where pageId=".$session{page}{pageId});
|
||||
_reorderPages($session{page}{parentId});
|
||||
WebGUI::Session::refreshPageInfo($session{page}{parentId});
|
||||
return "";
|
||||
|
|
@ -206,7 +210,11 @@ sub www_deletePageConfirm {
|
|||
if ($session{page}{pageId} < 1000 && $session{page}{pageId} > 0) {
|
||||
return WebGUI::Privilege::vitalComponent();
|
||||
} elsif (WebGUI::Privilege::canEditPage()) {
|
||||
WebGUI::SQL->write("update page set parentId=3 where pageId=".$session{page}{pageId});
|
||||
WebGUI::SQL->write("update page set parentId=3, "
|
||||
."bufferUserId=".$session{user}{userId}.", "
|
||||
."bufferDate=".time().", "
|
||||
."bufferPrevId=".$session{page}{parentId}." "
|
||||
."where pageId=".$session{page}{pageId});
|
||||
_reorderPages($session{page}{parentId});
|
||||
WebGUI::Session::refreshPageInfo($session{page}{parentId});
|
||||
return "";
|
||||
|
|
@ -547,7 +555,9 @@ sub www_pastePage {
|
|||
($nextSeq) = WebGUI::SQL->quickArray("select max(sequenceNumber) from page where parentId=$session{page}{pageId}");
|
||||
$nextSeq += 1;
|
||||
if (WebGUI::Privilege::canEditPage()) {
|
||||
WebGUI::SQL->write("update page set parentId=$session{page}{pageId}, sequenceNumber='$nextSeq' where pageId=$session{form}{pageId}");
|
||||
WebGUI::SQL->write("update page set parentId=$session{page}{pageId}, sequenceNumber='$nextSeq', "
|
||||
."bufferUserId=NULL, bufferDate=NULL, bufferPrevId=NULL "
|
||||
."where pageId=$session{form}{pageId}");
|
||||
_reorderPages($session{page}{pageId});
|
||||
return "";
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -153,6 +153,8 @@ sub www_editMiscSettings {
|
|||
$output .= '<h1>'.WebGUI::International::get(140).'</h1>';
|
||||
$f = WebGUI::HTMLForm->new;
|
||||
$f->hidden("op","saveSettings");
|
||||
$f->yesNo("sharedClipboard",WebGUI::International::get(947),$session{setting}{sharedClipboard});
|
||||
$f->yesNo("sharedTrash",WebGUI::International::get(946),$session{setting}{sharedTrash});
|
||||
$f->yesNo("preventProxyCache",WebGUI::International::get(400),$session{setting}{preventProxyCache});
|
||||
$f->yesNo("showDebug",WebGUI::International::get(707),$session{setting}{showDebug});
|
||||
$f->yesNo("trackPageStatistics",WebGUI::International::get(749),$session{setting}{trackPageStatistics});
|
||||
|
|
|
|||
|
|
@ -13,14 +13,68 @@ package WebGUI::Operation::Trash;
|
|||
use Exporter;
|
||||
use strict qw(vars subs);
|
||||
use Tie::CPHash;
|
||||
use WebGUI::DateTime;
|
||||
use WebGUI::Icon;
|
||||
use WebGUI::Operation::Shared;
|
||||
use WebGUI::Privilege;
|
||||
use WebGUI::Session;
|
||||
use WebGUI::SQL;
|
||||
use WebGUI::URL;
|
||||
|
||||
our @ISA = qw(Exporter);
|
||||
our @EXPORT = qw(&www_purgeTrash &www_purgeTrashConfirm);
|
||||
our @EXPORT = qw(&www_cutTrashItem &www_deleteTrashItem &www_deleteTrashItemConfirm
|
||||
&www_emptyTrash &www_emptyTrashConfirm &www_manageTrash);
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub _purgePage {
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub _purgeUserTrash {
|
||||
my (%properties, $base, $extended, $b, $wobjectId, $namespace, $w, $cmd, $userId, $bufferId, $a, $pageId);
|
||||
tie %properties, 'Tie::CPHash';
|
||||
|
||||
$userId = $session{user}{userId};
|
||||
|
||||
#WebGUI::ErrorHandler::audit("emptying user trash");
|
||||
|
||||
# Delete wobjects
|
||||
$b = WebGUI::SQL->read("select * from wobject where pageId=3 and bufferUserId=" . $userId);
|
||||
while ($base = $b->hashRef) {
|
||||
$extended = WebGUI::SQL->quickHashRef("select * from ".$base->{namespace}."
|
||||
where wobjectId=".$base->{wobjectId});
|
||||
%properties = (%{$base}, %{$extended});
|
||||
$cmd = "WebGUI::Wobject::".$properties{namespace};
|
||||
$w = $cmd->new(\%properties);
|
||||
$w->purge;
|
||||
}
|
||||
$b->finish;
|
||||
|
||||
# Delete pages and all subpages
|
||||
$a = WebGUI::SQL->read("select pageId from page where parentId=3 and bufferUserId=" . $userId);
|
||||
while (($pageId) = $a->array) {
|
||||
_recursePageTree($pageId);
|
||||
_purgeWobjects($pageId);
|
||||
WebGUI::SQL->write("delete from page where pageId=$pageId");
|
||||
}
|
||||
$a->finish;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub _purgeWobject {
|
||||
my (%properties, $base, $extended, $b, $wobjectId, $namespace, $w, $cmd);
|
||||
tie %properties, 'Tie::CPHash';
|
||||
$b = WebGUI::SQL->read("select * from wobject where wobjectId=$_[0]");
|
||||
while ($base = $b->hashRef) {
|
||||
$extended = WebGUI::SQL->quickHashRef("select * from ".$base->{namespace}."
|
||||
where wobjectId=".$base->{wobjectId});
|
||||
%properties = (%{$base}, %{$extended});
|
||||
$cmd = "WebGUI::Wobject::".$properties{namespace};
|
||||
$w = $cmd->new(\%properties);
|
||||
$w->purge;
|
||||
}
|
||||
$b->finish;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub _purgeWobjects {
|
||||
|
|
@ -51,31 +105,303 @@ sub _recursePageTree {
|
|||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_purgeTrash {
|
||||
my ($output);
|
||||
if (WebGUI::Privilege::isInGroup(3)) {
|
||||
$output = helpIcon(46);
|
||||
$output .= '<h1>'.WebGUI::International::get(42).'</h1>';
|
||||
$output .= WebGUI::International::get(162).'<p>';
|
||||
$output .= '<div align="center"><a href="'.WebGUI::URL::page('op=purgeTrashConfirm').
|
||||
'">'.WebGUI::International::get(44).'</a>';
|
||||
$output .= ' <a href="'.WebGUI::URL::page().'">'.
|
||||
WebGUI::International::get(45).'</a></div>';
|
||||
return $output;
|
||||
} else {
|
||||
return WebGUI::Privilege::adminOnly();
|
||||
}
|
||||
sub _submenu {
|
||||
my (%menu);
|
||||
tie %menu, 'Tie::IxHash';
|
||||
$menu{WebGUI::URL::page('op=manageTrash')} = WebGUI::International::get(10);
|
||||
$menu{WebGUI::URL::page('op=emptyTrash')} = WebGUI::International::get(11);
|
||||
if ( ($session{setting}{sharedTrash} ne "1") && (WebGUI::Privilege::isInGroup(3)) ) {
|
||||
$menu{WebGUI::URL::page('op=manageTrash&systemTrash=1')} = WebGUI::International::get(964);
|
||||
$menu{WebGUI::URL::page('op=emptyTrash&systemTrash=1')} = WebGUI::International::get(967);
|
||||
}
|
||||
return menuWrapper($_[0],\%menu);
|
||||
}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_cutTrashItem {
|
||||
return WebGUI::Privilege::insufficient() unless (WebGUI::Privilege::isInGroup(4));
|
||||
if ($session{form}{wid} ne "") {
|
||||
if ( ($session{setting}{sharedTrash} ne "1") && (!(WebGUI::Privilege::isInGroup(3)) ) ) {
|
||||
my ($bufferUserId) = WebGUI::SQL->quickArray("select bufferUserId from wobject "
|
||||
."where wobjectId=" .$session{form}{wid});
|
||||
return WebGUI::Privilege::insufficient() unless ($bufferUserId eq $session{user}{userId});
|
||||
}
|
||||
WebGUI::SQL->write("update wobject set pageId=2, "
|
||||
."bufferUserId=". $session{user}{userId} .", "
|
||||
."bufferDate=". time() .", "
|
||||
."bufferPrevId=3 "
|
||||
."where wobjectId=" .$session{form}{wid});
|
||||
WebGUI::ErrorHandler::audit("moved wobject ". $session{form}{wid} ." from trash to clipboard");
|
||||
} elsif ($session{form}{pageId} ne "") {
|
||||
if ( ($session{setting}{sharedTrash} ne "1") && (!(WebGUI::Privilege::isInGroup(3)) ) ) {
|
||||
my ($bufferUserId) = WebGUI::SQL->quickArray("select bufferUserId from page "
|
||||
."where pageId=" .$session{form}{pageId});
|
||||
return WebGUI::Privilege::insufficient() unless ($bufferUserId eq $session{user}{userId});
|
||||
}
|
||||
WebGUI::SQL->write("update page set parentId=2, "
|
||||
."bufferUserId=". $session{user}{userId} .", "
|
||||
."bufferDate=". time() .", "
|
||||
."bufferPrevId=3 "
|
||||
."where pageId=" .$session{form}{pageId});
|
||||
WebGUI::ErrorHandler::audit("moved page ". $session{form}{pageId} ." from trash to clipboard");
|
||||
}
|
||||
WebGUI::Session::refreshPageInfo($session{page}{pageId});
|
||||
return "";
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_purgeTrashConfirm {
|
||||
if (WebGUI::Privilege::isInGroup(3)) {
|
||||
sub www_deleteTrashItem {
|
||||
return WebGUI::Privilege::insufficient() unless (WebGUI::Privilege::isInGroup(4));
|
||||
my ($output);
|
||||
if ($session{form}{wid} ne "") {
|
||||
$output .= helpIcon(14);
|
||||
} elsif ($session{form}{pageId} ne "") {
|
||||
$output .= helpIcon(3);
|
||||
}
|
||||
$output .= '<h1>'.WebGUI::International::get(42).'</h1>';
|
||||
$output .= WebGUI::International::get(966).'<p>';
|
||||
if ($session{form}{wid} ne "") {
|
||||
$output .= '<div align="center"><a href="'.WebGUI::URL::page('op=deleteTrashItemConfirm&wid='
|
||||
.$session{form}{wid}) . '">'.WebGUI::International::get(44).'</a>';
|
||||
} elsif ($session{form}{pageId} ne "") {
|
||||
$output .= '<div align="center"><a href="'.WebGUI::URL::page('op=deleteTrashItemConfirm&pageId='
|
||||
.$session{form}{pageId}) . '">'.WebGUI::International::get(44).'</a>';
|
||||
}
|
||||
$output .= ' <a href="'.WebGUI::URL::page().'">'
|
||||
.WebGUI::International::get(45).'</a></div>';
|
||||
return $output;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_deleteTrashItemConfirm {
|
||||
return WebGUI::Privilege::insufficient() unless (WebGUI::Privilege::isInGroup(4));
|
||||
if ($session{form}{wid} ne "") {
|
||||
if ( ($session{setting}{sharedTrash} eq "1") || (WebGUI::Privilege::isInGroup(3)) ) {
|
||||
_purgeWobject($session{form}{wid});
|
||||
} else {
|
||||
my ($bufferUserId) = WebGUI::SQL->quickArray("select bufferUserId from wobject "
|
||||
."where wobjectId=" .$session{form}{wid});
|
||||
return WebGUI::Privilege::insufficient() unless ($bufferUserId eq $session{user}{userId});
|
||||
_purgeWobject($session{form}{wid});
|
||||
}
|
||||
WebGUI::ErrorHandler::audit("purged wobject ". $session{form}{wid} ." from trash");
|
||||
} elsif ($session{form}{pageId} ne "") {
|
||||
if ( ($session{setting}{sharedTrash} eq "1") || (WebGUI::Privilege::isInGroup(3)) ) {
|
||||
_recursePageTree($session{form}{pageId});
|
||||
_purgeWobjects($session{form}{pageId});
|
||||
WebGUI::SQL->write("delete from page where pageId=" .$session{form}{pageId});
|
||||
} else {
|
||||
my ($bufferUserId) = WebGUI::SQL->quickArray("select bufferUserId from page "
|
||||
."where pageId=" .$session{form}{pageId});
|
||||
return WebGUI::Privilege::insufficient() unless ($bufferUserId eq $session{user}{userId});
|
||||
_recursePageTree($session{form}{pageId});
|
||||
_purgeWobjects($session{form}{pageId});
|
||||
WebGUI::SQL->write("delete from page where pageId=" .$session{form}{pageId});
|
||||
}
|
||||
WebGUI::ErrorHandler::audit("purged page ". $session{form}{pageId} ." from trash");
|
||||
}
|
||||
WebGUI::Session::refreshPageInfo($session{page}{pageId});
|
||||
return "";
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_emptyTrash {
|
||||
return WebGUI::Privilege::insufficient() unless (WebGUI::Privilege::isInGroup(4));
|
||||
my ($output);
|
||||
$output = helpIcon(46);
|
||||
$output .= '<h1>'.WebGUI::International::get(42).'</h1>';
|
||||
$output .= WebGUI::International::get(162).'<p>';
|
||||
$output .= WebGUI::International::get(651).'<p>';
|
||||
if ($session{form}{systemTrash} eq "1") {
|
||||
$output .= '<div align="center"><a href="'.WebGUI::URL::page('op=emptyTrashConfirm&systemTrash=1')
|
||||
.'">'.WebGUI::International::get(44).'</a>';
|
||||
} else {
|
||||
$output .= '<div align="center"><a href="'.WebGUI::URL::page('op=emptyTrashConfirm')
|
||||
.'">'.WebGUI::International::get(44).'</a>';
|
||||
}
|
||||
$output .= ' <a href="'.WebGUI::URL::page().'">'
|
||||
.WebGUI::International::get(45).'</a></div>';
|
||||
return $output;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_emptyTrashConfirm {
|
||||
return WebGUI::Privilege::insufficient() unless (WebGUI::Privilege::isInGroup(4));
|
||||
my ($allUsers);
|
||||
if ($session{setting}{sharedTrash} eq "1") {
|
||||
$allUsers = 1;
|
||||
} elsif ($session{form}{systemTrash} eq "1") {
|
||||
return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
|
||||
$allUsers = 1;
|
||||
} else {
|
||||
$allUsers = 0;
|
||||
}
|
||||
if ($allUsers eq "1") {
|
||||
_recursePageTree(3);
|
||||
_purgeWobjects(3);
|
||||
return "";
|
||||
WebGUI::ErrorHandler::audit("emptied system trash");
|
||||
} else {
|
||||
return WebGUI::Privilege::adminOnly();
|
||||
_purgeUserTrash();
|
||||
WebGUI::ErrorHandler::audit("emptied user trash");
|
||||
}
|
||||
WebGUI::Session::refreshPageInfo($session{page}{pageId});
|
||||
return "";
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_manageTrash {
|
||||
return WebGUI::Privilege::insufficient() unless (WebGUI::Privilege::isInGroup(4));
|
||||
my ($sth, @data, @row, $i, $p, $allUsers);
|
||||
my $output = helpIcon(66);
|
||||
|
||||
if ($session{setting}{sharedTrash} eq "1") {
|
||||
$allUsers = 1;
|
||||
$output .= '<h1>'. WebGUI::International::get(962) .'</h1>';
|
||||
} elsif ($session{form}{systemTrash} eq "1") {
|
||||
return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
|
||||
$allUsers = 1;
|
||||
$output .= '<h1>'. WebGUI::International::get(965) .'</h1>';
|
||||
} else {
|
||||
$allUsers = 0;
|
||||
$output .= '<h1>'. WebGUI::International::get(962) .'</h1>';
|
||||
}
|
||||
|
||||
|
||||
|
||||
#
|
||||
# Generate list of pages
|
||||
#
|
||||
if ($allUsers) {
|
||||
$sth = WebGUI::SQL->read("select pageId,title,urlizedTitle,bufferUserId,bufferDate,bufferPrevId "
|
||||
."from page where parentId=3 order by bufferDate desc,bufferUserId");
|
||||
} else {
|
||||
$sth = WebGUI::SQL->read("select pageId,title,urlizedTitle,bufferUserId,bufferDate,bufferPrevId "
|
||||
."from page where parentId=3 and bufferUserId="
|
||||
. $session{user}{userId} . " order by bufferDate desc");
|
||||
}
|
||||
while (@data = $sth->array) {
|
||||
my ($pageId,$title,$urlizedTitle,$bufferUserId,$bufferDate,$bufferPrevId,$url);
|
||||
$pageId = $data[0];
|
||||
$title = $data[1];
|
||||
$urlizedTitle = $data[2];
|
||||
$title = '<a href="'. WebGUI::URL::gateway($urlizedTitle) .'">' .$title .'</a>';
|
||||
|
||||
$bufferUserId = $data[3];
|
||||
if ($bufferUserId ne "") {
|
||||
my ($bufferUsername) = WebGUI::SQL->quickArray("select username from users where userId=".$bufferUserId);
|
||||
$bufferUserId = '<a href="' .WebGUI::URL::page('op=viewProfile&uid='.$bufferUserId) .'">'
|
||||
.$bufferUsername .'</a>';
|
||||
}
|
||||
$bufferDate = epochToHuman($data[4]);
|
||||
$bufferPrevId = $data[5];
|
||||
if ($bufferPrevId ne "") {
|
||||
($bufferPrevId,$url) = WebGUI::SQL->quickArray("select title,urlizedTitle "
|
||||
."from page where pageId=".$bufferPrevId);
|
||||
if ($url ne "") {
|
||||
$bufferPrevId = '<a href="'. WebGUI::URL::gateway($url) .'">' .$bufferPrevId .'</a>';
|
||||
}
|
||||
}
|
||||
$row[$i] = '<tr>';
|
||||
$row[$i] .= '<td valign="top" class="tableData">'
|
||||
.pageIcon()
|
||||
.deleteIcon('op=deleteTrashItem&pageId='.$pageId)
|
||||
.cutIcon('op=cutTrashItem&pageId='.$pageId);
|
||||
$row[$i] .= '</td>';
|
||||
$row[$i] .= '<td valign="top" class="tableData">'.$title;
|
||||
$row[$i] .= '</td>';
|
||||
$row[$i] .= '<td valign="top" class="tableData">'.WebGUI::International::get(2);
|
||||
$row[$i] .= '</td>';
|
||||
$row[$i] .= '<td valign="top" class="tableData">'.$bufferDate;
|
||||
$row[$i] .= '</td>';
|
||||
$row[$i] .= '<td valign="top" class="tableData">'.$bufferPrevId;
|
||||
$row[$i] .= '</td>';
|
||||
if ($allUsers) {
|
||||
$row[$i] .= '<td valign="top" class="tableData">'.$bufferUserId;
|
||||
$row[$i] .= '</td>';
|
||||
}
|
||||
$row[$i] .= '</tr>';
|
||||
$i++;
|
||||
}
|
||||
|
||||
#
|
||||
# Generate list of wobjects
|
||||
#
|
||||
if ($allUsers) {
|
||||
$sth = WebGUI::SQL->read("select wobjectId,namespace,title,bufferUserId,bufferDate,bufferPrevId "
|
||||
. "from wobject where pageId=3 order by bufferDate desc,bufferUserId");
|
||||
} else {
|
||||
$sth = WebGUI::SQL->read("select wobjectId,namespace,title,bufferUserId,bufferDate,bufferPrevId "
|
||||
. "from wobject where pageId=3 and bufferUserId="
|
||||
. $session{user}{userId} ." order by bufferDate desc");
|
||||
}
|
||||
while (@data = $sth->array) {
|
||||
my ($wobjectId,$namespace,$title,$bufferUserId,$bufferDate,$bufferPrevId,$url);
|
||||
|
||||
$wobjectId = $data[0];
|
||||
$namespace = $data[1];
|
||||
$title = $data[2];
|
||||
$title = '<a href="'. WebGUI::URL::page('func=view&wid='. $wobjectId) .'">'. $title .'</a>';
|
||||
|
||||
$bufferPrevId = $data[5];
|
||||
if ($bufferPrevId ne "") {
|
||||
($bufferPrevId,$url) = WebGUI::SQL->quickArray("select title,urlizedTitle "
|
||||
."from page where pageId=".$bufferPrevId);
|
||||
if ($url ne "") {
|
||||
$bufferPrevId = '<a href="'. WebGUI::URL::gateway($url) .'">' .$bufferPrevId .'</a>';
|
||||
}
|
||||
}
|
||||
$bufferDate = epochToHuman($data[4]);
|
||||
|
||||
$bufferUserId = $data[3];
|
||||
if ($bufferUserId ne "") {
|
||||
my ($bufferUsername) = WebGUI::SQL->quickArray("select username from users where userId=".$bufferUserId);
|
||||
$bufferUserId = '<a href="' .WebGUI::URL::page('op=viewProfile&uid='.$bufferUserId) .'">'
|
||||
.$bufferUsername .'</a>';
|
||||
}
|
||||
|
||||
$row[$i] = '<tr>';
|
||||
$row[$i] .= '<td valign="top" class="tableData">'
|
||||
.wobjectIcon()
|
||||
.deleteIcon('op=deleteTrashItem&wid='.$wobjectId)
|
||||
.cutIcon('op=cutTrashItem&wid='.$wobjectId);
|
||||
$row[$i] .= '<td valign="top" class="tableData">'.$title;
|
||||
$row[$i] .= '</td>';
|
||||
$row[$i] .= '<td valign="top" class="tableData">'.$namespace;
|
||||
$row[$i] .= '</td>';
|
||||
$row[$i] .= '<td valign="top" class="tableData">'.$bufferDate;
|
||||
$row[$i] .= '</td>';
|
||||
$row[$i] .= '<td valign="top" class="tableData">'.$bufferPrevId;
|
||||
$row[$i] .= '</td>';
|
||||
if ($allUsers) {
|
||||
$row[$i] .= '<td valign="top" class="tableData">'.$bufferUserId;
|
||||
$row[$i] .= '</td>';
|
||||
}
|
||||
$row[$i] .= '</tr>';
|
||||
$i++;
|
||||
}
|
||||
$sth->finish;
|
||||
if ($session{form}{systemTrash} eq "1") {
|
||||
$p = WebGUI::Paginator->new(WebGUI::URL::page('op=manageTrash&systemTrash=1'),\@row);
|
||||
} else {
|
||||
$p = WebGUI::Paginator->new(WebGUI::URL::page('op=manageTrash'),\@row);
|
||||
}
|
||||
$output .= '<table border=1 cellpadding=5 cellspacing=0 align="center">';
|
||||
$output .= '<tr><th></th>'
|
||||
.'<th>'. WebGUI::International::get(99) .'</th>'
|
||||
.'<th>'. WebGUI::International::get(783) .'</th>'
|
||||
.'<th>'. WebGUI::International::get(963) .'</th>'
|
||||
.'<th>'. WebGUI::International::get(953) .'</th>';
|
||||
if ($allUsers) {
|
||||
$output .= '<th>'. WebGUI::International::get(50) .'</th>'
|
||||
.'</tr>';
|
||||
} else {
|
||||
$output .= '</tr>';
|
||||
}
|
||||
$output .= $p->getPage($session{form}{pn});
|
||||
$output .= '</table>';
|
||||
$output .= $p->getBarTraditional($session{form}{pn});
|
||||
return _submenu($output);
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue