Some code cleanup

This commit is contained in:
Yung Han Khoe 2008-11-19 05:18:37 +00:00
parent 01d2322af6
commit cd8f7a1f30
5 changed files with 25 additions and 465 deletions

View file

@ -18,7 +18,6 @@ use strict;
use Tie::IxHash;
use Class::C3;
use base qw(WebGUI::AssetAspect::Comments WebGUI::Asset);
#use base 'WebGUI::Asset';
use WebGUI::Utility;
@ -81,15 +80,6 @@ sub definition {
tie %properties, 'Tie::IxHash';
my $i18n = WebGUI::International->new($session, "Asset_MatrixListing");
%properties = (
# templateId => {
# tab =>"display",
# fieldType =>"template",
# defaultValue =>'MatrixListingTmpl00001',
# noFormPost =>0,
# namespace =>"MatrixListing",
# hoverHelp =>$i18n->get('template description'),
# label =>$i18n->get('template label')
# },
screenshots => {
tab =>"properties",
fieldType =>"image",
@ -236,11 +226,9 @@ sub getEditForm {
my $session = $self->session;
my $db = $session->db;
my $matrixId = $self->getParent->getId;
my $tabform = $self->next::method();#SUPER::getEditForm();
my $tabform = $self->next::method();
my $i18n = WebGUI::International->new($session, 'Asset_MatrixListing');
#$self->session->style->setScript($self->session->url->extras('FileUploadControl.js'), {type =>'text/javascript'});
foreach my $category (keys %{$self->getParent->getCategories}) {
$tabform->getTab('properties')->raw('<tr><td colspan="2"><b>'.$category.'</b></td></tr>');
my $attributes;
@ -262,23 +250,6 @@ sub getEditForm {
}
}
return $tabform;
=cut
$tabform->hidden({
name=>"returnUrl",
value=>$self->session->form->get("returnUrl")
});
if ($self->getValue("namespace") eq "") {
my $namespaces = $self->session->dbSlave->buildHashRef("select distinct(namespace) from template order by
namespace");
$tabform->getTab("properties")->combo(
-name=>"namespace",
-options=>$namespaces,
-label=>$i18n->get('namespace'),
-hoverHelp=>$i18n->get('namespace description'),
-value=>[$self->session->form->get("namespace")]
);
}
=cut
}
#-------------------------------------------------------------------
@ -293,13 +264,6 @@ sub hasRated {
my $self = shift;
my $session = $self->session;
=cut
return 1 unless ($self->session->user->isInGroup($self->get("groupToRate")));
my $ratingTimeout = $self->session->user->isInGroup($self->get("privilegedGroup")) ?
$self->get("ratingTimeoutPrivileged") : $self->get("ratingTimeout");
=cut
my $hasRated = $self->session->db->quickScalar("select count(*) from MatrixListing_rating where
((userId=? and userId<>'1') or (userId='1' and ipAddress=?)) and listingId=?",
[$session->user->userId,$session->env->get("HTTP_X_FORWARDED_FOR"),$self->getId]);
@ -325,9 +289,7 @@ sub incrementCounter {
my $counter = shift;
my $currentIp = $self->session->env->get("HTTP_X_FORWARDED_FOR");
#print "current ip: ".$currentIp."<br>";
#print "dsfsdf lastIp : ".$self->get($counter."LastIp")."<br>";
unless ($self->get($counter."LastIp") eq $currentIp) {
$self->update({
$counter."LastIp" => $currentIp,
@ -381,7 +343,7 @@ sub processPropertiesFromFormPost {
my $session = $self->session;
my $score = 0;
$self->next::method(@_);#SUPER::processPropertiesFromFormPost;
$self->next::method(@_);
my $attributes = $session->db->read("select * from Matrix_attribute where assetId = ?",[$self->getParent->getId]);
while (my $attribute = $attributes->hashRef) {
@ -533,9 +495,6 @@ sub view {
if ($attribute->{fieldType} eq 'MatrixCompare'){
$attribute->{value} = WebGUI::Form::MatrixCompare->new($self->session,$attribute)->getValueAsHtml;
}
#$attribute->{value} = $attribute->{description};
#$tabform->getTab("properties")->dynamicField(%{$attribute});
#my $categoryLoopName = $self->session->url->urlize($category)."_loop";
push(@attribute_loop,$attribute);
}
$var->{$categoryLoopName} = \@attribute_loop;
@ -551,9 +510,7 @@ sub view {
my $file = WebGUI::Form::File->new($self->session,{ value=>$var->{screenshots} });
my $storage = $file->getStorageLocation;
my @files = @{ $storage->getFiles } if (defined $storage);
if (scalar(@files)) {
#$var->{screenshots} = $file->getFilePreview($storage);
}
$var->{screenshots} = qq|
<script language="javascript">AC_FL_RunContent = 0;</script>
<script src="/extras/ukplayer/AC_RunActiveContent.js" language="javascript"></script>
@ -951,80 +908,6 @@ sub www_view {
return $self->view;
}
#-------------------------------------------------------------------
# Everything below here is to make it easier to install your custom
# asset, but has nothing to do with assets in general
#-------------------------------------------------------------------
# cd /data/WebGUI/lib
# perl -MWebGUI::Asset::MatrixListing -e install www.example.com.conf [ /path/to/WebGUI ]
# - or -
# perl -MWebGUI::Asset::MatrixListing -e uninstall www.example.com.conf [ /path/to/WebGUI ]
#-------------------------------------------------------------------
use base 'Exporter';
our @EXPORT = qw(install uninstall);
use WebGUI::Session;
#-------------------------------------------------------------------
sub install {
my $config = $ARGV[0];
my $home = $ARGV[1] || "/data/WebGUI";
die "usage: perl -MWebGUI::Asset::MatrixListing -e install www.example.com.conf\n" unless ($home && $config);
print "Installing asset.\n";
my $session = WebGUI::Session->open($home, $config);
$session->config->addToArray("assets","WebGUI::Asset::MatrixListing");
$session->db->write("create table MatrixListing (
assetId char(22) binary not null,
revisionDate bigint not null,
screenshots char(22),
description text,
version char(255),
views int(11),
compares int(11),
clicks int(11),
viewsLastIp char(255),
comparesLastIp char(255),
clicksLastIp char(255),
lastUpdated int(11),
maintainer char(22),
manufacturerName char(255),
manufacturerURL char(255),
productURL char(255),
score int(11),
primary key (assetId, revisionDate)
)");
$session->db->write("create table MatrixListing_attribute (
matrixId char(22) not null,
matrixListingId char(22) not null,
attributeId char(22) not null,
value char(255),
primary key (matrixId, matrixListingId, attributeId)
)");
$session->var->end;
$session->close;
print "Done. Please restart Apache.\n";
}
#-------------------------------------------------------------------
sub uninstall {
my $config = $ARGV[0];
my $home = $ARGV[1] || "/data/WebGUI";
die "usage: perl -MWebGUI::Asset::MatrixListing -e uninstall www.example.com.conf\n" unless ($home && $config);
print "Uninstalling asset.\n";
my $session = WebGUI::Session->open($home, $config);
$session->config->deleteFromArray("assets","WebGUI::Asset::MatrixListing");
my $rs = $session->db->read("select assetId from asset where className='WebGUI::Asset::MatrixListing'");
while (my ($id) = $rs->array) {
my $asset = WebGUI::Asset->new($session, $id, "WebGUI::Asset::MatrixListing");
$asset->purge if defined $asset;
}
$session->db->write("drop table MatrixListing");
$session->var->end;
$session->close;
print "Done. Please restart Apache.\n";
}
1;

View file

@ -69,17 +69,15 @@ sub definition {
my %properties;
tie %properties, 'Tie::IxHash';
%properties = (
templateId =>{
fieldType =>"template",
defaultValue =>'matrixtmpl000000000001',
tab =>"display",
#www_editSave will ignore anyone's attempts to update this field if this is set to 1
noFormPost =>0,
#This is an option specific to the template fieldType.
namespace =>"Matrix",
hoverHelp =>$i18n->get('template description'),
label =>$i18n->get('template label'),
},
templateId =>{
fieldType =>"template",
defaultValue =>'matrixtmpl000000000001',
tab =>"display",
noFormPost =>0,
namespace =>"Matrix",
hoverHelp =>$i18n->get('template description'),
label =>$i18n->get('template label'),
},
searchTemplateId=>{
defaultValue =>"matrixtmpl000000000005",
fieldType =>"template",
@ -96,14 +94,6 @@ sub definition {
hoverHelp =>$i18n->get('detail template description'),
label =>$i18n->get('detail template label'),
},
# ratingDetailTemplateId=>{
# defaultValue =>"matrixtmpl000000000004",
# fieldType =>"template",
# tab =>"display",
# namespace =>"Matrix/RatingDetail",
# hoverHelp =>$i18n->get('rating detail template description'),
# label =>$i18n->get('rating detail template label'),
# },
compareTemplateId=>{
defaultValue =>"matrixtmpl000000000002",
fieldType =>"template",
@ -361,56 +351,14 @@ An array of listingIds that should be selected in the compare form.
sub getCompareForm {
my $self = shift;
=cut
my @selectedListingIds = @_;
my (%options, @listings);
tie %options, 'Tie::IxHash';
my $sortDirection = " asc";
if ( WebGUI::Utility::isIn($self->get('defaultSort'),qw(revisionDate score)) ){
$sortDirection = " desc";
}
@listings = @{ $self->getLineage(['descendants'], {
includeOnlyClasses => ['WebGUI::Asset::MatrixListing'],
joinClass => "WebGUI::Asset::MatrixListing",
orderByClause => $self->get('defaultSort').$sortDirection,
returnObjects => 1,
}) };
# Create an options hash based on the ordered array of listings.
foreach my $listing (@listings){
$options{$listing->getId} = '<a href="'.$listing->getUrl.'">'.$listing->get('title').'</a>';
}
my $maxComparisons;
if($self->session->user->isVisitor){
$maxComparisons = $self->get('maxComparisons');
}
else{
$maxComparisons = $self->get('maxComparisonsPrivileged');
}
=cut
my $form = WebGUI::Form::formHeader($self->session,{action=>$self->getUrl,extras=>'name="doCompare"'})
# .WebGUI::Form::submit($self->session, {
# value=>"compare"
# })
# ."<br />"
."<br />"
.WebGUI::Form::hidden($self->session, {
name=>"func",
value=>"compare"
})
.'<div id="compareForm"></div> '
# .WebGUI::Form::checkList($self->session, {
# name=>"listingId",
# vertical=>1,
# value=>\@selectedListingIds,
# options=>\%options,
# })
."<br />"
# .WebGUI::Form::submit($self->session,{
# value=>"compare"
# })
.WebGUI::Form::formFooter($self->session);
my $maxComparisons;
@ -439,13 +387,6 @@ returns the tabform object that will be used in generating the edit page for Mat
sub getEditForm {
my $self = shift;
my $tabform = $self->SUPER::getEditForm();
=cut
$tabform->getTab("display")->template(
-value=>$self->getValue("templateId"),
-label=>WebGUI::International::get("template_label","Asset_Matrix"),
-namespace=>"Matrix"
);
=cut
return $tabform;
}
@ -563,21 +504,6 @@ sub view {
$var->{bestClicks_name} = $bestClicks_listing->get('title');
$var->{bestClicks_sortButton} = "<span id='sortByClicks'><button type='button'>Sort by clicks</button></span><br />";
=cut
# Get the MatrixListing that was last updated as an object using getLineage.
my ($bestUpdated_listing) = @{ $self->getLineage(['descendants'], {
includeOnlyClasses => ['WebGUI::Asset::MatrixListing'],
orderByClause => "revisionDate desc",
limit => 1,
returnObjects => 1,
}) };
$var->{bestUpdated_url} = $bestUpdated_listing->getUrl;
$var->{bestUpdated_date} = $session->datetime->epochToHuman( $bestUpdated_listing->get('revisionDate') );
$var->{bestUpdated_name} = $bestUpdated_listing->get('title');
$var->{bestUpdated_sortButton} = "<span id='sortByUpdated'><button type='button'>Sort by updated</button></span><br />";
=cut
# Get the 5 MatrixListings that were last updated as objects using getLineage.
my @lastUpdatedListings = @{ $self->getLineage(['descendants'], {
@ -678,9 +604,6 @@ assetData.revisionDate
group by asset.assetId",
[$self->getId]);
#This is an example of debugging code to help you diagnose problems.
#WebGUI::ErrorHandler::warn($self->get("templateId"));
return $self->processTemplate($var, undef, $self->{_viewTemplate});
}
@ -698,7 +621,7 @@ sub www_compare {
my $var = $self->get;
my @listingIds = @_;
my @columnKeys;
#my @listingIds = ['AwioUvaZXmAEaFw20t-x3Q', 'CWNjAHcmh0pEF6WJooomJA'];
unless (scalar(@listingIds)) {
@listingIds = $self->session->form->checkList("listingId");
}
@ -774,24 +697,6 @@ sub www_deleteAttribute {
#-------------------------------------------------------------------
=head2 www_edit ( )
Web facing method which is the default edit page. This method is entirely
optional. Take it out unless you specifically want to set a submenu in your
adminConsole views.
=cut
#sub www_edit {
# my $self = shift;
# return $self->session->privilege->insufficient() unless $self->canEdit;
# return $self->session->privilege->locked() unless $self->canEditIfLocked;
# my $i18n = WebGUI::International->new($self->session, "Asset_Matrix");
# return $self->getAdminConsole->render($self->getEditForm->print, $i18n->get("edit title"));
#}
#-------------------------------------------------------------------
=head2 www_editAttribute ( )
Shows a form to edit or add an attribute.
@ -893,20 +798,7 @@ sub www_editAttribute {
."</script>\n";
$form->raw($html);
=cut
$form->text(
-name =>"defaultValue",
-value =>$attribute->{defaultValue},
-label =>$i18n->get('attribute defaultValue label'),
-hoverHelp =>$i18n->get('attribute defaultValue description'),
);
$form->textarea(
-name =>"options",
-value =>$attribute->{options},
-label =>$i18n->get('attribute options label'),
-hoverHelp =>$i18n->get('attribute options description'),
);
=cut
$form->selectBox(
-name =>"category",
-value =>[$attribute->{category}],
@ -993,14 +885,7 @@ sub www_getCompareFormData {
my @listingIds = $self->session->form->checkList("listingId");
$self->session->http->setMimeType("application/json");
=cut
my @listings = @{ $self->getLineage(['descendants'], {
includeOnlyClasses => ['WebGUI::Asset::MatrixListing'],
joinClass => "WebGUI::Asset::MatrixListing",
orderByClause => $self->get('defaultSort').$sortDirection,
returnObjects => 1,
}) };
=cut
my $sql = "
select
assetData.title,
@ -1034,9 +919,7 @@ assetData.revisionDate
@results = @{ $session->db->buildArrayRefOfHashRefs($sql,[$self->getId]) };
foreach my $result (@results){
#$result->{checked} = '';
if($form->process("search")){
#my $listing = WebGUI::Asset::MatrixListing->new($session,$result->{assetId});
$self->session->errorHandler->warn("checking listing: ".$result->{title});
foreach my $param ($form->param) {
if($param =~ m/^search_/){
@ -1061,7 +944,7 @@ assetData.revisionDate
$self->session->errorHandler->warn("--Checked--");
$result->{checked} = 'checked';
}
}
}
}
}
else{
@ -1079,21 +962,7 @@ assetData.revisionDate
}
$result->{checkBox} .= " onChange='javascript:compareFormButton()' class='compareCheckBox'>";
}
=cut
push(@results,{
Title=>$data->{title},
Views=>$data->{views},
Compares=>$data->{compares},
Clicks=>$data->{clicks}
});
=cut
# Create an options hash based on the orderd array of listings.
=cut
foreach my $listing (@listings){
push(@results,{Title=>$listing->get('title'),Phone=>'123'})
#$options{$listing->getId} = '<a href="'.$listing->getUrl.'">'.$listing->get('title').'</a>';
}
=cut
my $jsonOutput;
$jsonOutput->{ResultSet} = {Result=>\@results};
@ -1232,8 +1101,6 @@ sub www_search {
{type =>'text/javascript'});
$self->session->style->setScript($self->session->url->extras('yui/build/button/button-min.js'),
{type =>'text/javascript'});
# $self->session->style->setScript($self->session->url->extras('wobject/Matrix/matrixCompareList.js'), {type =>
# 'text/javascript'});
$self->session->style->setScript($self->session->url->extras('wobject/Matrix/matrixSearch.js'), {type =>
'text/javascript'});
$self->session->style->setLink($self->session->url->extras('yui/build/datatable/assets/skins/sam/datatable.css'),
@ -1266,83 +1133,6 @@ sub www_search {
return $self->processStyle($self->processTemplate($var,$self->get("searchTemplateId")));
}
#-------------------------------------------------------------------
# Everything below here is to make it easier to install your custom
# wobject, but has nothing to do with wobjects in general
#-------------------------------------------------------------------
# cd /data/WebGUI/lib
# perl -MWebGUI::Asset::Wobject::Matrix -e install www.example.com.conf [ /path/to/WebGUI ]
# - or -
# perl -MWebGUI::Asset::Wobject::Matrix -e uninstall www.example.com.conf [ /path/to/WebGUI ]
#-------------------------------------------------------------------
use base 'Exporter';
our @EXPORT = qw(install uninstall);
use WebGUI::Session;
#-------------------------------------------------------------------
sub install {
my $config = $ARGV[0];
my $home = $ARGV[1] || "/data/WebGUI";
die "usage: perl -MWebGUI::Asset::Wobject::Matrix -e install www.example.com.conf\n" unless ($home && $config);
print "Installing asset.\n";
my $session = WebGUI::Session->open($home, $config);
$session->config->addToArray("assets","WebGUI::Asset::Wobject::Matrix");
$session->db->write("create table Matrix (
assetId varchar(22) binary not null,
revisionDate bigint not null,
templateId varchar(22) not null,
searchTemplateId varchar(22) not null,
compareTemplateId varchar(22) not null,
detailTemplateId varchar(22) not null,
maxComparisons int(11) not null default 10,
maxComparisonsPrivileged int(11) not null default 25,
defaultSort varchar(22) not null default 'score',
categories text,
compareColorNo varchar(22) not null default '#ffaaaa',
compareColorLimited varchar(22) not null default '#ffffaa',
compareColorCostsExtra varchar(22) not null default '#ffffaa',
compareColorFreeAddOn varchar(22) not null default '#ffffaa',
compareColorYes varchar(22) not null default '#aaffaa',
submissionApprovalWorkflowId varchar(22) not null,
ratingsDuration int(11) not null default 7776000,
primary key (assetId, revisionDate)
)");
$session->db->write("create table Matrix_attribute (
assetId char(22) binary not null,
attributeId char(22) binary not null,
name char(255) not null,
description text,
fieldType char(255) not null default 'MatrixCompare',
category char(22) not null,
options text,
defaultValue char(255),
primary key (attributeId)
)");
$session->var->end;
$session->close;
print "Done. Please restart Apache.\n";
}
#-------------------------------------------------------------------
sub uninstall {
my $config = $ARGV[0];
my $home = $ARGV[1] || "/data/WebGUI";
die "usage: perl -MWebGUI::Asset::Wobject::Matrix -e uninstall www.example.com.conf\n" unless ($home && $config);
print "Uninstalling asset.\n";
my $session = WebGUI::Session->open($home, $config);
$session->config->deleteFromArray("assets","WebGUI::Asset::Wobject::Matrix");
my $rs = $session->db->read("select assetId from asset where className='WebGUI::Asset::Wobject::Matrix'");
while (my ($id) = $rs->array) {
my $asset = WebGUI::Asset->new($session, $id, "WebGUI::Asset::Wobject::Matrix");
$asset->purge if defined $asset;
}
$session->db->write("drop table Matrix");
$session->var->end;
$session->close;
print "Done. Please restart Apache.\n";
}
1;