diff --git a/docs/upgrades/packages-7.7.9/matrix-default-compare-template.wgpkg b/docs/upgrades/packages-7.7.9/matrix-default-compare-template.wgpkg new file mode 100644 index 000000000..699188fad Binary files /dev/null and b/docs/upgrades/packages-7.7.9/matrix-default-compare-template.wgpkg differ diff --git a/docs/upgrades/packages-7.7.9/matrix-default-detailed-listing.wgpkg b/docs/upgrades/packages-7.7.9/matrix-default-detailed-listing.wgpkg new file mode 100644 index 000000000..5b231d027 Binary files /dev/null and b/docs/upgrades/packages-7.7.9/matrix-default-detailed-listing.wgpkg differ diff --git a/docs/upgrades/packages-7.7.9/matrix-default-view-template.wgpkg b/docs/upgrades/packages-7.7.9/matrix-default-view-template.wgpkg new file mode 100644 index 000000000..bda801baa Binary files /dev/null and b/docs/upgrades/packages-7.7.9/matrix-default-view-template.wgpkg differ diff --git a/docs/upgrades/packages-7.7.9/matrix-search-template.wgpkg b/docs/upgrades/packages-7.7.9/matrix-search-template.wgpkg new file mode 100644 index 000000000..2e8a7a806 Binary files /dev/null and b/docs/upgrades/packages-7.7.9/matrix-search-template.wgpkg differ diff --git a/lib/WebGUI/Asset/MatrixListing.pm b/lib/WebGUI/Asset/MatrixListing.pm index d4678869b..f55ed6224 100644 --- a/lib/WebGUI/Asset/MatrixListing.pm +++ b/lib/WebGUI/Asset/MatrixListing.pm @@ -710,8 +710,6 @@ sub view { {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/matrixListing.js'), {type => - 'text/javascript'}); $self->session->style->setLink($self->session->url->extras('yui/build/datatable/assets/skins/sam/datatable.css'), {type =>'text/css', rel=>'stylesheet'}); diff --git a/lib/WebGUI/Asset/Wobject/Matrix.pm b/lib/WebGUI/Asset/Wobject/Matrix.pm index cc385d777..d6bfb4832 100644 --- a/lib/WebGUI/Asset/Wobject/Matrix.pm +++ b/lib/WebGUI/Asset/Wobject/Matrix.pm @@ -635,8 +635,6 @@ sub view { '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/matrix.js'), {type => - 'text/javascript'}); my ($varStatistics,$varStatisticsEncoded); my $var = $self->get; @@ -646,7 +644,7 @@ sub view { $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(); + $var->{matrix_url} = $self->getUrl(); my $maxComparisons; if($self->session->user->isVisitor){ @@ -658,10 +656,7 @@ sub view { else{ $maxComparisons = $self->get('maxComparisonsPrivileged'); } - $var->{javascript} = ""; + $var->{maxComparisons} = $maxComparisons; if ($self->canEdit){ # Get all the MatrixListings that are still pending. @@ -880,8 +875,6 @@ sub www_compare { {type =>'text/javascript'}); $self->session->style->setScript($self->session->url->extras('yui/build/container/container-min.js'), {type =>'text/javascript'}); - $self->session->style->setScript($self->session->url->extras('wobject/Matrix/matrixCompareList.js'), {type => - 'text/javascript'}); $self->session->style->setLink($self->session->url->extras('yui/build/datatable/assets/skins/sam/datatable.css'), {type =>'text/css', rel=>'stylesheet'}); $self->session->style->setScript($self->session->url->extras('hoverhelp.js'), {type => @@ -905,13 +898,12 @@ sub www_compare { $listingId_safe =~ s/-/_____/g; push(@responseFields, $listingId_safe, $listingId_safe."_compareColor"); } - - $var->{javascript} = ""; + + $var->{maxComparisons} = $maxComparisons; + $var->{matrixUrl} = $self->getUrl; + $var->{listingIds} = join(", ",map {'"'.$_.'"'} @listingIds); + $var->{responseFields} = '"attributeId", "name", "description","fieldType", "checked", ' + .join(", ",map{'"'.$_.'"'} @responseFields); return $self->processStyle($self->processTemplate($var,$self->get("compareTemplateId"))); } @@ -1170,7 +1162,8 @@ sub www_getCompareFormData { my @results; if($form->process("search")){ - while (my $result = $self->getListings) { + if ($searchParamList){ + foreach 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) @@ -1192,8 +1185,16 @@ sub www_getCompareFormData { $result->{checked} = 'checked'; } } - $result->{assetId} =~ s/-/_____/g; - push @results, $result; + $result->{assetId} =~ s/-/_____/g; + push @results, $result; + } + } + else{ + foreach my $result (@{$self->getListings}) { + $result->{checked} = 'checked'; + $result->{assetId} =~ s/-/_____/g; + push @results, $result; + } } }else{ foreach my $result (@{$self->getListings}) { @@ -1382,8 +1383,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/matrixSearch.js'), {type => - 'text/javascript'}); $self->session->style->setLink($self->session->url->extras('yui/build/datatable/assets/skins/sam/datatable.css'), {type =>'text/css', rel=>'stylesheet'}); diff --git a/www/extras/wobject/Matrix/matrix.js b/www/extras/wobject/Matrix/matrix.js deleted file mode 100644 index 6711e0358..000000000 --- a/www/extras/wobject/Matrix/matrix.js +++ /dev/null @@ -1,141 +0,0 @@ -YAHOO.util.Event.addListener(window, "load", function() { - YAHOO.example.XHR_JSON = new function() { - this.formatUrl = function(elCell, oRecord, oColumn, sData) { - elCell.innerHTML = "" + sData + ""; - }; - this.formatCheckBox = function(elCell, oRecord, oColumn, sData) { - var innerHTML = ""; - elCell.innerHTML = innerHTML; - }; - - var myColumnDefs = [ - {key:"assetId",label:"",sortable:false, formatter:this.formatCheckBox}, - {key:"title", label:"", sortable:true, formatter:this.formatUrl}, - {key:"views", sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC}}, - {key:"clicks", sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC}}, - {key:"compares", sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC}}, - {key:"lastUpdated", sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC}} - ]; - - var uri = "func=getCompareFormData"; - if(typeof(listingIds) != 'undefined'){ - uri = uri + ';__listingId_isIn=1'; - for (var i = 0; i < listingIds.length; i++) { - uri = uri+';listingId='+listingIds[i]; - } - } - - 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); - - this.myDataTable.hideColumn(this.myDataTable.getColumn(2)); - this.myDataTable.hideColumn(this.myDataTable.getColumn(3)); - this.myDataTable.hideColumn(this.myDataTable.getColumn(4)); - this.myDataTable.hideColumn(this.myDataTable.getColumn(5)); - - if(document.getElementById("sortByViews")){ - var btnSortByViews = new YAHOO.widget.Button("sortByViews"); - btnSortByViews.on("click", function(e) { - this.myDataTable.sortColumn(this.myDataTable.getColumn(2)); - var request = YAHOO.util.Connect.asyncRequest('POST', matrixUrl + "?func=setSort;sort=views"); - },this,true); - } - - if(document.getElementById("sortByClicks")){ - var btnSortByClicks = new YAHOO.widget.Button("sortByClicks"); - btnSortByClicks.on("click", function(e) { - this.myDataTable.sortColumn(this.myDataTable.getColumn(3)); - var request = YAHOO.util.Connect.asyncRequest('POST', matrixUrl + "?func=setSort;sort=clicks"); - },this,true); - } - - if(document.getElementById("sortByCompares")){ - var btnSortByCompares = new YAHOO.widget.Button("sortByCompares"); - btnSortByCompares.on("click", function(e) { - this.myDataTable.sortColumn(this.myDataTable.getColumn(4)); - var request = YAHOO.util.Connect.asyncRequest('POST', matrixUrl + "?func=setSort;sort=compares"); - },this,true); - } - - if(document.getElementById("sortByUpdated")){ - var btnSortByUpdated = new YAHOO.widget.Button("sortByUpdated"); - btnSortByUpdated.on("click", function(e) { - this.myDataTable.sortColumn(this.myDataTable.getColumn(5)); - var request = YAHOO.util.Connect.asyncRequest('POST', matrixUrl + "?func=setSort;sort=lastUpdated"); - },this,true); - } - - if(document.getElementById("sortByName")){ - var btnSortByName = new YAHOO.widget.Button("sortByName"); - btnSortByName.on("click", function(e) { - this.myDataTable.sortColumn(this.myDataTable.getColumn(1)); - var request = YAHOO.util.Connect.asyncRequest('POST', matrixUrl + "?func=setSort;sort=lastUpdated"); - },this,true); - } - - - var myCallback = function() { - this.set("sortedBy", null); - this.onDataReturnAppendRows.apply(this,arguments); - }; - - var compareFormButton = function() { - var compareCheckBoxes = YAHOO.util.Dom.getElementsByClassName('compareCheckBox','input'); - var checked = 0; - var checkedCompareBoxes = new Object(); - for (var i = compareCheckBoxes.length; i--; ) { - if(compareCheckBoxes[i].checked){ - checked++; - checkedCompareBoxes[compareCheckBoxes[i].value] = true; - } - } - if (checked < 2){ - alert(tooFewMessage); - }else if (checked > maxComparisons){ - alert(tooManyMessage); - }else{ - window.document.forms['doCompare'].submit(); - } - var elements = window.compareDataTable.getRecordSet().getRecords(); - for(j=0; j"; - elCell.innerHTML = innerHTML; - } - }; - - this.formatColors = function(elCell, oRecord, oColumn, sData) { - if(!(oRecord.getData("fieldType") in {'category':'','lastUpdated':''})){ - var colorField = oColumn.key + "_compareColor"; - var color = oRecord.getData(colorField); - if(color){ - Dom.setStyle(elCell.parentNode, "background-color", color); - } - elCell.innerHTML = sData; - }else{ - elCell.innerHTML = sData; - } - }; - this.formatLabel = function(elCell, oRecord, oColumn, sData) { - if(oRecord.getData("fieldType") == 'category'){ - elCell.innerHTML = "" +sData + ""; - }else{ - elCell.innerHTML = sData; - if(oRecord.getData("description")){ - elCell.innerHTML = elCell.innerHTML + "
" + oRecord.getData("description") +"
"; - } - } - }; - - YAHOO.widget.DataTable.Formatter.formatColors = this.formatColors; - - var myColumnDefs = [ - {key:"stickied",formatter:this.formatStickied,label:""}, - {key:"name",formatter:this.formatLabel,label:""} - ]; - - this.myDataSource = new YAHOO.util.DataSource("?"); - this.myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON; - this.myDataSource.connXhrMode = "queueRequests"; - this.myDataSource.responseSchema = { - resultsList: "ResultSet.Result", - fields: responseFields - }; - - var uri = "func=getCompareListData"; - for (var i = 0; i < listingIds.length; i++) { - uri = uri+';listingId='+listingIds[i]; - } - - var initAttributeHoverHelp = function() { - initHoverHelp('compareList'); - } - - var myDataTable = new YAHOO.widget.DataTable("compareList", myColumnDefs, - this.myDataSource, {initialRequest:uri}); - myDataTable.subscribe("initEvent", initAttributeHoverHelp); - - - window.removeListing = function(key) { - myDataTable.hideColumn(myDataTable.removeColumn(key)); - } - - this.myDataSource.doBeforeParseData = function (oRequest, oFullResponse) { - this.responseSchema.fields = oFullResponse.ResponseFields; - var existingColumns = myDataTable.getColumnSet().keys; - for (var i = 0; i < existingColumns.length; i++) { - if(i > 1){ - // after deleting a column the next column will - // allways be no. 2 (the third in the array) - myDataTable.removeColumn(existingColumns[2]); - } - } - if (oFullResponse.ColumnDefs) { - var len = oFullResponse.ColumnDefs.length; - - for (var i = 0; i < len; i++) { - var c = oFullResponse.ColumnDefs[i]; - oFullResponse.ColumnDefs[i].label = "" + oFullResponse.ColumnDefs[i].label + " " - myDataTable.insertColumn(c); - } - } - return oFullResponse; - } - - var myCallback = function() { - this.set("sortedBy", null); - this.onDataReturnAppendRows.apply(this,arguments); - initHoverHelp('compareList'); - }; - - var callback2 = { - success : myCallback, - failure : myCallback, - scope : myDataTable - }; - - if(document.getElementById("compare3")){ - var btnCompare3 = new YAHOO.widget.Button("compare3",{id:"compareButton3"}); - btnCompare3.on("click", function(e) { - var compareCheckBoxes = YAHOO.util.Dom.getElementsByClassName('compareCheckBox','input'); - var checked = 0; - var checkedCompareBoxes = new Object(); - for (var i = compareCheckBoxes.length; i--; ) { - if(compareCheckBoxes[i].checked){ - checked++; - checkedCompareBoxes[compareCheckBoxes[i].value] = true; - } - } - if (checked < 2){ - alert(tooFewMessage); - }else if (checked > maxComparisons){ - alert(tooManyMessage); - }else{ - //window.document.forms['doCompare'].submit(); - var uri = "func=getCompareListData"; - for (var i = compareCheckBoxes.length; i--; ) { - if(compareCheckBoxes[i].checked == true){ - uri = uri+';listingId='+compareCheckBoxes[i].value; - } - } - myDataTable.getRecordSet().reset(); - myDataTable.refreshView(); - myDataTable.showTableMessage('Loading...'); - this.myDataSource.sendRequest(uri,callback2); - } - - },this,true); - } - - if(document.getElementById("stickied")){ - var btnStickied = new YAHOO.widget.Button("stickied"); - btnStickied.on("click", function(e) { - var elements = myDataTable.getRecordSet().getRecords(); - if(hideStickies == 0){ - // hide non-selected attributes - for(i=0; i" + sData + ""; - }; - this.formatCheckBox = function(elCell, oRecord, oColumn, sData) { - var innerHTML = ""; - elCell.innerHTML = innerHTML; - }; - - var myColumnDefs = [ - {key:"assetId",label:"",sortable:false, formatter:this.formatCheckBox}, - {key:"title", label:"", sortable:true, formatter:this.formatUrl}, - {key:"views", sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC}}, - {key:"clicks", sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC}}, - {key:"compares", sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC}}, - {key:"lastUpdated", sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC}} - ]; - - var uri = "func=getCompareFormData"; - if(typeof(listingIds) != 'undefined'){ - uri = uri + ';__listingId_isIn=1'; - for (var i = 0; i < listingIds.length; i++) { - uri = uri+';listingId='+listingIds[i]; - } - } - - 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.myDataTable = new YAHOO.widget.DataTable("compareForm", myColumnDefs, - this.myDataSource, {initialRequest:uri}); - - this.myDataTable.hideColumn(this.myDataTable.getColumn(2)); - this.myDataTable.hideColumn(this.myDataTable.getColumn(3)); - this.myDataTable.hideColumn(this.myDataTable.getColumn(4)); - this.myDataTable.hideColumn(this.myDataTable.getColumn(5)); - - var myCallback = function() { - this.set("sortedBy", null); - this.onDataReturnAppendRows.apply(this,arguments); - }; - - if(document.getElementById("search")){ - var btnSearch = new YAHOO.widget.Button("search"); - btnSearch.on("click", function(e) { - window.location.href = matrixUrl + '?func=search'; - },this,true); - } - - window.compareDataTable = this.myDataTable; - - }; -}); - - -function setStickied (checkbox) { - if(checkbox.checked == true){ - var request = YAHOO.util.Connect.asyncRequest('POST', "?func=setStickied;attributeId="+checkbox.name); - }else{ - var request = YAHOO.util.Connect.asyncRequest('POST', "?func=deleteStickied;attributeId="+checkbox.name); - } - -} - - - diff --git a/www/extras/wobject/Matrix/matrixListing.js b/www/extras/wobject/Matrix/matrixListing.js deleted file mode 100644 index 8d87a4b58..000000000 --- a/www/extras/wobject/Matrix/matrixListing.js +++ /dev/null @@ -1,126 +0,0 @@ -YAHOO.util.Event.addListener(window, "load", function() { - YAHOO.example.XHR_JSON = new function() { - var Dom = YAHOO.util.Dom; - var hideStickies = 0; - - this.formatStickied = function(elCell, oRecord, oColumn, sData) { - if(oRecord.getData("fieldType") != 'category'){ - var innerHTML = ""; - elCell.innerHTML = innerHTML; - } - }; - this.formatLabel = function(elCell, oRecord, oColumn, sData) { - if(oRecord.getData("fieldType") == 'category'){ - elCell.innerHTML = "" +sData + ""; - }else{ - elCell.innerHTML = sData + "
" + oRecord.getData("description") +"
"; - } - }; - this.formatColors = function(elCell, oRecord, oColumn, sData) { - if(oRecord.getData("fieldType") != 'category'){ - var color = oRecord.getData("compareColor"); - if(color){ - Dom.setStyle(elCell.parentNode, "background-color", color); - } - elCell.innerHTML = sData; - } - }; - var myColumnDefs = [ - {key:"stickied",formatter:this.formatStickied,label:""}, - {key:"label",formatter:this.formatLabel,label:""}, - {key:"value",label:"",formatter:this.formatColors} - ]; - - this.myDataSource = new YAHOO.util.DataSource("?"); - this.myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON; - this.myDataSource.connXhrMode = "queueRequests"; - this.myDataSource.responseSchema = { - resultsList: "ResultSet.Result", - fields: ["label","value","attributeId","fieldType","checked","description","compareColor"] - }; - - var uri = "func=getAttributes"; - if(typeof(revision) != 'undefined'){ - uri = uri + ';revision=' + revision; - } - - var initAttributeHoverHelp = function() { - initHoverHelp('attributes'); - } - - var myDataTable = new YAHOO.widget.DataTable("attributes", myColumnDefs, - this.myDataSource, {initialRequest:uri}); - myDataTable.subscribe("initEvent", initAttributeHoverHelp); - - - this.myDataSource.doBeforeParseData = function (oRequest, oFullResponse) { - myDataTable.getRecordSet().reset(); - return oFullResponse; - } - - var myCallback = function() { - this.set("sortedBy", null); - this.onDataReturnAppendRows.apply(this,arguments); - }; - - var myCallback2 = function() { - this.set("sortedBy", null); - this.onDataReturnAppendRows.apply(this,arguments); - }; - - var callback2 = { - success : myCallback, - failure : myCallback, - scope : myDataTable - }; - - var btnStickied = new YAHOO.widget.Button("stickied"); - btnStickied.on("click", function(e) { - var elements = myDataTable.getRecordSet().getRecords(); - if(hideStickies == 0){ - // hide non-selected attributes - for(i=0; i" + sData + ""; - }; - this.formatCheckBox = function(elCell, oRecord, oColumn, sData) { - var innerHTML = ""; - elCell.innerHTML = innerHTML; - }; - - var myColumnDefs = [ - {key:"assetId",label:"",sortable:false, formatter:this.formatCheckBox}, - {key:"title", label:"Name", sortable:true, formatter:this.formatUrl} - ]; - - var uri = "func=getCompareFormData"; - if(typeof(listingIds) != 'undefined'){ - for (var i = 0; i < listingIds.length; i++) { - uri = uri+';listingId='+listingIds[i]; - } - } - - this.myDataSource = new YAHOO.util.DataSource("?"); - this.myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON; - this.myDataSource.connXhrMode = "queueRequests"; - this.myDataSource.responseSchema = { - resultsList: "ResultSet.Result", - fields: ["title","checked","url","assetId"] - }; - - var myDataTable = new YAHOO.widget.DataTable("compareForm", myColumnDefs, - this.myDataSource, {initialRequest:uri}); - - var myDataSource = this.myDataSource; - - var myCallback = function() { - this.set("sortedBy", null); - this.onDataReturnAppendRows.apply(this,arguments); - }; - - var callback2 = { - success : myCallback, - failure : myCallback, - scope : myDataTable - }; - - var reloadCompareForm = function() { - var attributeSelects = YAHOO.util.Dom.getElementsByClassName('attributeSelect','select'); - var newUri = "func=getCompareFormData;search=1"; - for (var i = attributeSelects.length; i--; ) { - var selectedIndex = attributeSelects[i].selectedIndex; - if(attributeSelects[i].value != 'blank' && !(attributeSelects[i].value == '0' && attributeSelects[i][selectedIndex].text == 'No')){ - newUri = newUri + ';search_' + attributeSelects[i].id + '=' + attributeSelects[i].value; - } - } - myDataTable.getRecordSet().reset(); - myDataTable.refreshView(); - myDataTable.showTableMessage('Loading...'); - - myDataSource.sendRequest(newUri,callback2); - - } - var attributeSelects = YAHOO.util.Dom.getElementsByClassName('attributeSelect','select'); - for (var i = attributeSelects.length; i--; ) { - attributeSelects[i].onchange = reloadCompareForm; - } - - var btnCompare = new YAHOO.widget.Button("compare",{id:"compareButton"}); - btnCompare.on("click", function(e) { - var compareCheckBoxes = YAHOO.util.Dom.getElementsByClassName('compareCheckBox','input'); - var checked = 0; - for (var i = compareCheckBoxes.length; i--; ) { - if(compareCheckBoxes[i].checked){ - checked++; - } - } - if (checked < 2){ - alert(tooFewMessage); - }else if (checked > maxComparisons){ - alert(tooManyMessage); - }else{ - window.document.forms['doCompare'].submit(); - } - },this,true); - - }; -}); -