package WebGUI::Wobject::LinkList; #------------------------------------------------------------------- # WebGUI is Copyright 2001-2002 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 strict; use Tie::CPHash; use WebGUI::HTMLForm; use WebGUI::Icon; use WebGUI::International; use WebGUI::Macro; use WebGUI::Privilege; use WebGUI::Session; use WebGUI::SQL; use WebGUI::URL; use WebGUI::Wobject; our @ISA = qw(WebGUI::Wobject); our $namespace = "LinkList"; our $name = WebGUI::International::get(6,$namespace); #------------------------------------------------------------------- sub duplicate { my ($w, $sth, @row, $newLinkId); $w = $_[0]->SUPER::duplicate($_[1]); $w = WebGUI::Wobject::LinkList->new({wobjectId=>$w,namespace=>$namespace}); $w->set({ indent=>$_[0]->get("indent"), bullet=>$_[0]->get("bullet"), lineSpacing=>$_[0]->get("lineSpacing") }); $sth = WebGUI::SQL->read("select * from LinkList_link where wobjectId=".$_[0]->get("wobjectId")); while (@row = $sth->array) { $newLinkId = getNextId("LinkList_linkId"); WebGUI::SQL->write("insert into LinkList_link values (".$w->get("wobjectId").", $newLinkId, " .quote($row[2]).", ".quote($row[3]).", ".quote($row[4]).", '$row[5]', '$row[6]')"); } $sth->finish; } #------------------------------------------------------------------- sub purge { WebGUI::SQL->write("delete from LinkList_link where wobjectId=".$_[0]->get("wobjectId")); $_[0]->SUPER::purge(); } #------------------------------------------------------------------- sub set { $_[0]->SUPER::set($_[1],[qw(indent bullet lineSpacing)]); } #------------------------------------------------------------------- sub www_deleteLink { return WebGUI::Privilege::insufficient() unless (WebGUI::Privilege::canEditPage()); return $_[0]->confirm(WebGUI::International::get(9,$namespace), WebGUI::URL::page('func=deleteLinkConfirm&wid='.$session{form}{wid}.'&lid='.$session{form}{lid})); } #------------------------------------------------------------------- sub www_deleteLinkConfirm { return WebGUI::Privilege::insufficient() unless (WebGUI::Privilege::canEditPage()); $_[0]->deleteCollateral("LinkList_link","LinkList_linkId",$session{form}{lid}); $_[0]->reorderCollateral("LinkList_link","LinkList_linkId"); return ""; } #------------------------------------------------------------------- sub www_edit { return WebGUI::Privilege::insufficient() unless (WebGUI::Privilege::canEditPage()); my ($proceed, $f, $output, $indent, $lineSpacing, $bullet); if ($_[0]->get("wobjectId") eq "new") { $proceed = 1; } $bullet = $_[0]->get("bullet") || '·'; $lineSpacing = $_[0]->get("lineSpacing") || 1; $indent = $_[0]->get("indent") || 5; $output = helpIcon(1,$namespace); $output .= '
'.WebGUI::International::get(13,$namespace).'
';
}
for ($i=0;$i<$_[0]->get("indent");$i++) {
$indent .= " ";
}
for ($i=0;$i<$_[0]->get("lineSpacing");$i++) {
$lineSpacing .= "
";
}
$sth = WebGUI::SQL->read("select * from LinkList_link where wobjectId=".$_[0]->get("wobjectId")." order by sequenceNumber");
while (%link = $sth->hash) {
if ($session{var}{adminOn}) {
$output .= deleteIcon('func=deleteLink&wid='.$_[0]->get("wobjectId").'&lid='.$link{LinkList_linkId})
.editIcon('func=editLink&wid='.$_[0]->get("wobjectId").'&lid='.$link{LinkList_linkId})
.moveUpIcon('func=moveLinkUp&wid='.$_[0]->get("wobjectId").'&lid='.$link{LinkList_linkId})
.moveDownIcon('func=moveLinkDown&wid='.$_[0]->get("wobjectId").'&lid='.$link{LinkList_linkId})
.' ';
} else {
$output .= $indent.$_[0]->get("bullet");
}
$output .= '';
if ($link{description} ne "") {
$output .= ' - '.$link{description};
}
$output .= $lineSpacing;
}
$sth->finish;
return $_[0]->processMacros($output);
}
1;