From 3a1dd51fd63af60f73a1b3c7c2b24f32665879b4 Mon Sep 17 00:00:00 2001 From: Hugh Messenger Date: Mon, 6 Aug 2012 21:30:51 -0500 Subject: [PATCH] Fixing some code-rot in thumbs element, hadn't been updated to identify list rows using getRenderContext(), also tidying up and safe-ing some queries. --- .../fabrik_element/thumbs/list-thumbs-min.js | 2 +- plugins/fabrik_element/thumbs/list-thumbs.js | 6 ++--- plugins/fabrik_element/thumbs/thumbs.php | 23 ++++++++++++++----- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/plugins/fabrik_element/thumbs/list-thumbs-min.js b/plugins/fabrik_element/thumbs/list-thumbs-min.js index af52e628235..6ecf85a4421 100644 --- a/plugins/fabrik_element/thumbs/list-thumbs-min.js +++ b/plugins/fabrik_element/thumbs/list-thumbs-min.js @@ -1 +1 @@ -var FbThumbsList=new Class({options:{imageover:"",imageout:"",userid:""},Implements:[Events,Options],initialize:function(b,a){this.setOptions(a);this.col=$$("."+b);this.origThumbUp={};this.origThumbDown={};this.col.each(function(e){var f=e.getParent(".fabrik_row");if(f){var d=f.id.replace("list_"+this.options.listid+"_row_","");var c=e.getElements(".thumbup");var g=e.getElements(".thumbdown");c.each(function(h){h.addEvent("mouseover",function(i){h.setStyle("cursor","pointer");h.src=this.options.imagepath+"thumb_up_in.gif"}.bind(this));h.addEvent("mouseout",function(i){h.setStyle("cursor","");if(this.options.myThumbs[d]==="up"){h.src=this.options.imagepath+"thumb_up_in.gif"}else{h.src=this.options.imagepath+"thumb_up_out.gif"}}.bind(this));h.addEvent("click",function(i){this.doAjax(h,"up")}.bind(this))}.bind(this));g.each(function(h){h.addEvent("mouseover",function(i){h.setStyle("cursor","pointer");h.src=this.options.imagepath+"thumb_down_in.gif"}.bind(this));h.addEvent("mouseout",function(i){h.setStyle("cursor","");if(this.options.myThumbs[d]==="down"){h.src=this.options.imagepath+"thumb_down_in.gif"}else{h.src=this.options.imagepath+"thumb_down_out.gif"}}.bind(this));h.addEvent("click",function(i){this.doAjax(h,"down")}.bind(this))}.bind(this))}}.bind(this))},doAjax:function(f,a){var g=f.getParent(".fabrik_row");var b=g.id.replace("list_"+this.options.listid+"_row_","");var d=document.id("count_thumb"+a+b);Fabrik.loader.start(d);this.thumb=a;var c={option:"com_fabrik",format:"raw",task:"plugin.pluginAjax",plugin:"thumbs",method:"ajax_rate",g:"element",element_id:this.options.elid,row_id:b,elementname:this.options.elid,userid:this.options.userid,thumb:this.thumb,listid:this.options.listid};new Request({url:"",data:c,onComplete:function(i){var h=document.id("count_thumbup"+b);var j=document.id("count_thumbdown"+b);var e=g.getElements(".thumbup");var k=g.getElements(".thumbdown");this.spinner.dispose();Fabrik.loader.stop(d);i=JSON.decode(i);if(i.error){console.log(i.error)}else{h.set("html",i[0]);j.set("html",i[1])}}.bind(this)}).send()}}); \ No newline at end of file +var FbThumbsList=new Class({options:{imageover:"",imageout:"",userid:""},Implements:[Events,Options],initialize:function(b,a){this.setOptions(a);this.col=$$("."+b);this.origThumbUp={};this.origThumbDown={};this.col.each(function(e){var f=e.getParent(".fabrik_row");if(f){var d=f.id.replace("list_"+this.options.renderContext+"_row_","");var c=e.getElements(".thumbup");var g=e.getElements(".thumbdown");c.each(function(h){h.addEvent("mouseover",function(i){h.setStyle("cursor","pointer");h.src=this.options.imagepath+"thumb_up_in.gif"}.bind(this));h.addEvent("mouseout",function(i){h.setStyle("cursor","");if(this.options.myThumbs[d]==="up"){h.src=this.options.imagepath+"thumb_up_in.gif"}else{h.src=this.options.imagepath+"thumb_up_out.gif"}}.bind(this));h.addEvent("click",function(i){this.doAjax(h,"up")}.bind(this))}.bind(this));g.each(function(h){h.addEvent("mouseover",function(i){h.setStyle("cursor","pointer");h.src=this.options.imagepath+"thumb_down_in.gif"}.bind(this));h.addEvent("mouseout",function(i){h.setStyle("cursor","");if(this.options.myThumbs[d]==="down"){h.src=this.options.imagepath+"thumb_down_in.gif"}else{h.src=this.options.imagepath+"thumb_down_out.gif"}}.bind(this));h.addEvent("click",function(i){this.doAjax(h,"down")}.bind(this))}.bind(this))}}.bind(this))},doAjax:function(f,a){var g=f.getParent(".fabrik_row");var b=g.id.replace("list_"+this.options.renderContext+"_row_","");var d=document.id("count_thumb"+a+b);Fabrik.loader.start(d);this.thumb=a;var c={option:"com_fabrik",format:"raw",task:"plugin.pluginAjax",plugin:"thumbs",method:"ajax_rate",g:"element",element_id:this.options.elid,row_id:b,elementname:this.options.elid,userid:this.options.userid,thumb:this.thumb,listid:this.options.listid};new Request({url:"",data:c,onComplete:function(i){var h=document.id("count_thumbup"+b);var j=document.id("count_thumbdown"+b);var e=g.getElements(".thumbup");var k=g.getElements(".thumbdown");Fabrik.loader.stop(d);i=JSON.decode(i);if(i.error){console.log(i.error)}else{h.set("html",i[0]);j.set("html",i[1])}}.bind(this)}).send()}}); \ No newline at end of file diff --git a/plugins/fabrik_element/thumbs/list-thumbs.js b/plugins/fabrik_element/thumbs/list-thumbs.js index 142f3e026be..229ba0e7f21 100644 --- a/plugins/fabrik_element/thumbs/list-thumbs.js +++ b/plugins/fabrik_element/thumbs/list-thumbs.js @@ -15,14 +15,13 @@ var FbThumbsList = new Class({ initialize: function (id, options) { this.setOptions(options); - //this.spinner = Fabrik.loader.getSpinner(); this.col = $$('.' + id); this.origThumbUp = {}; this.origThumbDown = {}; this.col.each(function (tr) { var row = tr.getParent('.fabrik_row'); if (row) { - var rowid = row.id.replace('list_' + this.options.listid + '_row_', ''); + var rowid = row.id.replace('list_' + this.options.renderContext + '_row_', ''); var thumbup = tr.getElements('.thumbup'); var thumbdown = tr.getElements('.thumbdown'); thumbup.each(function (thumbup) { @@ -67,7 +66,7 @@ var FbThumbsList = new Class({ doAjax: function (e, thumb) { var row = e.getParent('.fabrik_row'); - var rowid = row.id.replace('list_' + this.options.listid + '_row_', ''); + var rowid = row.id.replace('list_' + this.options.renderContext + '_row_', ''); var count_thumb = document.id('count_thumb' + thumb + rowid); Fabrik.loader.start(count_thumb); this.thumb = thumb; @@ -93,7 +92,6 @@ var FbThumbsList = new Class({ var count_thumbdown = document.id('count_thumbdown' + rowid); var thumbup = row.getElements('.thumbup'); var thumbdown = row.getElements('.thumbdown'); - this.spinner.dispose(); Fabrik.loader.stop(count_thumb); //r = r.split(this.options.splitter2); r = JSON.decode(r); diff --git a/plugins/fabrik_element/thumbs/thumbs.php b/plugins/fabrik_element/thumbs/thumbs.php index 8bef1972b7a..63db4e86a2c 100644 --- a/plugins/fabrik_element/thumbs/thumbs.php +++ b/plugins/fabrik_element/thumbs/thumbs.php @@ -311,12 +311,22 @@ private function doThumb($listid, $formid, $row_id, $thumb) $userid = $db->quote($hash); } $elementid = $this->getElement()->id; - $db - ->setQuery( - "INSERT INTO #__{package}_thumbs (user_id, listid, formid, row_id, thumb, date_created, element_id) - values ($userid, $listid, $formid, $row_id, " . $db->quote($thumb) - . ", $strDate, $elementid) - ON DUPLICATE KEY UPDATE date_created = $strDate, thumb = " . $db->quote($thumb)); + $db->setQuery( + "INSERT INTO #__{package}_thumbs + (user_id, listid, formid, row_id, thumb, date_created, element_id) + values ( + " . $db->Quote($userid) . ", + " . $db->Quote($listid) . ", + " . $db->Quote($formid) . ", + " . $db->Quote($row_id) . ", + " . $db->quote($thumb) . ", + " . $db->Quote($strDate) . ", + " . $db->Quote($elementid) . " + ) + ON DUPLICATE KEY UPDATE + date_created = " . $db->Quote($strDate) . ", + thumb = " . $db->quote($thumb) + ); $db->query(); if ($db->getErrorNum()) { @@ -439,6 +449,7 @@ function elementListJavascript() $opts->elid = $this->getElement()->id; $opts->myThumbs = $listMyThumbs; $opts->userid = "$userid"; + $opts->renderContext = $this->getListModel()->getRenderContext(); $opts = json_encode($opts); return "new FbThumbsList('$id', $opts);\n"; }