From 909c8f62aed033c9309d91a13ded4334ec880b53 Mon Sep 17 00:00:00 2001 From: Yung Han Khoe Date: Tue, 12 May 2009 14:49:41 +0000 Subject: [PATCH] Compare form on Matrix default view screen is now generated from markup --- .../matrix-default-view-template.wgpkg | Bin 0 -> 3408 bytes lib/WebGUI/Asset/Wobject/Matrix.pm | 79 ++++++++++++------ www/extras/wobject/Matrix/matrix.js | 16 ++-- 3 files changed, 59 insertions(+), 36 deletions(-) create mode 100644 docs/upgrades/packages-7.7.6/matrix-default-view-template.wgpkg diff --git a/docs/upgrades/packages-7.7.6/matrix-default-view-template.wgpkg b/docs/upgrades/packages-7.7.6/matrix-default-view-template.wgpkg new file mode 100644 index 0000000000000000000000000000000000000000..80b93c31aa1398a51dd64484015e4663de3a674c GIT binary patch literal 3408 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 + my $sort = shift || $session->scratch->get('matrixSort') || $self->get('defaultSort'); + + my $sortDirection = ' desc'; + if ($sort eq 'title'){ + $sortDirection = ' asc'; + } + + my $sql = " + select + assetData.title, + assetData.url, + listing.assetId, + listing.views, + listing.compares, + listing.clicks, + listing.lastUpdated + from asset + left join assetData using(assetId) + left join MatrixListing as listing on listing.assetId = assetData.assetId and listing.revisionDate = +assetData.revisionDate + where + asset.parentId=? + and asset.state='published' + and asset.className='WebGUI::Asset::MatrixListing' + and assetData.revisionDate = (SELECT max(revisionDate) from assetData where assetId=asset.assetId and status='approved') + and status='approved' + order by ".$sort.$sortDirection; + + return $session->db->buildArrayRefOfHashRefs($sql,[$self->getId]); + +} + +#------------------------------------------------------------------- + =head2 getEditForm ( ) returns the tabform object that will be used in generating the edit page for Matrix. @@ -544,12 +592,13 @@ sub view { my ($varStatistics,$varStatisticsEncoded); my $var = $self->get; + $var->{listing_loop} = $self->getListings; $var->{isLoggedIn} = ($self->session->user->userId ne "1"); $var->{addMatrixListing_url} = $self->getUrl('func=add;class=WebGUI::Asset::MatrixListing'); - $var->{compareForm} = $self->getCompareForm; $var->{exportAttributes_url} = $self->getUrl('func=exportAttributes'); $var->{listAttributes_url} = $self->getUrl('func=listAttributes'); $var->{search_url} = $self->getUrl('func=search'); + $var->{compareForm_url} = $self->getUrl(); if ($self->canEdit){ # Get all the MatrixListings that are still pending. @@ -1053,32 +1102,9 @@ sub www_getCompareFormData { @searchParams_sorted = sort { $b->{value} <=> $a->{value} } @searchParams; } - my $sql = " - select - assetData.title, - assetData.url, - listing.assetId, - listing.views, - listing.compares, - listing.clicks, - listing.lastUpdated - from asset - left join assetData using(assetId) - left join MatrixListing as listing on listing.assetId = assetData.assetId and listing.revisionDate = -assetData.revisionDate - where - asset.parentId=? - and asset.state='published' - and asset.className='WebGUI::Asset::MatrixListing' - and assetData.revisionDate = (SELECT max(revisionDate) from assetData where assetId=asset.assetId and status='approved') - and status='approved' - order by ".$sort.$sortDirection; - - my $sth = $session->db->read($sql,[$self->getId]); my @results; - if($form->process("search")){ - while (my $result = $sth->hashRef) { + while (my $result = $self->getListings) { my $matrixListing_attributes = $session->db->buildHashRefOfHashRefs(" select value, fieldType, attributeId from Matrix_attribute left join MatrixListing_attribute as listing using(attributeId) @@ -1105,7 +1131,7 @@ assetData.revisionDate push @results, $result; } }else{ - while (my $result = $sth->hashRef) { + foreach my $result (@{$self->getListings}) { $result->{assetId} =~ s/-/_____/g; if(WebGUI::Utility::isIn($result->{assetId},@listingIds)){ $result->{checked} = 'checked'; @@ -1114,7 +1140,6 @@ assetData.revisionDate push @results, $result; } } - $sth->finish; my $jsonOutput; $jsonOutput->{ResultSet} = {Result=>\@results}; diff --git a/www/extras/wobject/Matrix/matrix.js b/www/extras/wobject/Matrix/matrix.js index 464742f2c..6711e0358 100644 --- a/www/extras/wobject/Matrix/matrix.js +++ b/www/extras/wobject/Matrix/matrix.js @@ -29,16 +29,14 @@ YAHOO.util.Event.addListener(window, "load", function() { } } - this.myDataSource = new YAHOO.util.DataSource(matrixUrl + "?"); - this.myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON; - this.myDataSource.connXhrMode = "queueRequests"; - this.myDataSource.responseSchema = { - resultsList: "ResultSet.Result", - fields: ["title",{key: "views", parser: "number"},{key: "clicks", parser: "number"},{key: "compares", parser: "number"},{key: "checked"},{key: "lastUpdated", parser: "number"},"url","assetId"] - }; + this.myDataSource = new YAHOO.util.DataSource(YAHOO.util.Dom.get("compareFormTable")); + this.myDataSource.responseType = YAHOO.util.DataSource.TYPE_HTMLTABLE; + this.myDataSource.responseSchema = { + fields: [{key: "checked"},"assetId","title",{key: "views", parser: "number"},{key: "clicks", parser: "number"},{key: "compares", parser: "number"},{key: "lastUpdated", parser: "number"},"url"] + }; - this.myDataTable = new YAHOO.widget.DataTable("compareForm", myColumnDefs, - this.myDataSource, {initialRequest:uri}); + this.myDataTable = new YAHOO.widget.DataTable("compareForm", myColumnDefs, + this.myDataSource); this.myDataTable.hideColumn(this.myDataTable.getColumn(2)); this.myDataTable.hideColumn(this.myDataTable.getColumn(3));