| Current Path : /home/digilove/www/plugins/system/plg_sj_vm_quickview/ |
| Current File : /home/digilove/www/plugins/system/plg_sj_vm_quickview/plg_sj_vm_quickview.php |
<?php
/**
* @package Sj Quick View for VirtueMart
* @version 1.0.0
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
* @copyright (c) 2013 YouTech Company. All Rights Reserved.
* @author YouTech Company http://www.smartaddons.com
*/
defined('_JEXEC') or die;
jimport('joomla.plugin.plugin');
if (!defined('DS')) define('DS', DIRECTORY_SEPARATOR);
class plgSystemPlg_Sj_Vm_QuickView extends JPlugin
{
protected $app = array();
protected $_params = null;
function __construct($subject, $config)
{
parent::__construct($subject, $config);
$this->loadLanguage();
$this->app = JFactory::getApplication();
$this->_params = $this->params;
}
function onBeforeRender()
{
if ($this->app->isAdmin()) return;
$app = JFactory::getApplication();
$option = $app->input->get('option');
$view = $app->input->get('view');
$tmpl = $app->input->get('tmpl');
$document = JFactory::getDocument();
if ($app->isSite() && $tmpl != 'component') {
if (!defined('SMART_JQUERY') && ( int )$this->params->get('include_jquery', '1')) {
$document->addScript(JURI::root(true) . '/plugins/system/plg_sj_vm_quickview/assets/js/jquery-1.8.2.min.js');
$document->addScript(JURI::root(true) . '/plugins/system/plg_sj_vm_quickview/assets/js/jquery-noconflict.js');
define('SMART_JQUERY', 1);
}
if (!class_exists ('VmConfig')) {
require(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_virtuemart' . DS . 'helpers' . DS . 'config.php');
}
VmConfig::loadConfig ();
if(class_exists('vmJsApi')){
vmJsApi::jPrice();
}
$document->addScript(JURI::root(true) . '/plugins/system/plg_sj_vm_quickview/assets/js/jquery.fancybox.js');
$document->addStyleSheet(JURI::root(true) . '/plugins/system/plg_sj_vm_quickview/assets/css/jquery.fancybox.css');
$document->addStyleSheet(JURI::root(true) . '/plugins/system/plg_sj_vm_quickview/assets/css/quickview.css');
}
return true;
}
public function onAfterRender()
{
if ($this->app->isAdmin()) return;
$app = JFactory::getApplication();
$option = $app->input->get('option');
$view = $app->input->get('view');
$tmpl = $app->input->get('tmpl');
$body = JResponse::GetBody();
if ($app->isSite() && $tmpl != 'component') {
$_cls = explode(',', $this->_params->get('item_class'));
if(empty($_cls)) return;
$cls = array();
for($i = 0 ; $i < count($_cls) ; $i++) {
$cls[] = trim($_cls[$i]);
}
$cls_str = implode(', ', $cls);
$body = str_replace('</body>', $this->_addScriptQV($cls_str) . '</body>', $body);
JResponse::setBody($body);
return true;
}
$is_ajax = !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
$is_ajax_qv = (int)JRequest::getVar('isajax_qv', 0);
if ($is_ajax && $is_ajax_qv) {
$body = JResponse::GetBody();
preg_match("~<body.*?>(.*?)<\/body>~is", $body, $match);
//var_dump(JURI::root());
echo '<div id="sj_quickview">'.$match[1].'</div>';
die;
//die(json_encode('<div id="sj_quickview">'.$match[1].'</div>'));
}
}
function onAfterDispatch(){
}
protected function _addScriptQV($cls_str)
{
ob_start();
?>
<script type="text/javascript">
//<![CDATA[
if(typeof Virtuemart !== 'undefined')
{
Virtuemart.updateImageEventListeners = function() {}
Virtuemart.updateDynamicUpdateListeners = function() {}
}
jQuery(document).ready(function ($) {
function _SJQuickView(){
var $item_class = $('<?php echo $cls_str; ?>');
if ($item_class.length > 0) {
for (var i = 0; i < $item_class.length; i++) {
if($($item_class[i]).find('.sj_quickview_handler').length <= 0){
var producturlpath = $($item_class[i]).find('a', $(this)).attr('href');
if(typeof producturlpath !== 'undefined' && producturlpath.length > 0 ){
producturlpath = ( producturlpath.indexOf('?') >= 0 ) ? producturlpath + '&tmpl=component' : producturlpath + '?tmpl=component' ;
var _quickviewbutton = "<a class='sj_quickview_handler' href='" + producturlpath + "'><?php echo $this->_params->get('label_button','quick view');?></a>";
$($item_class[i]).append(_quickviewbutton);
}
}
}
}
}
$('.sj_quickview_handler')._fancybox({
width: '<?php echo $this->_params->get('popup_width');?>',
height: '<?php echo $this->_params->get('popup_height');?>',
autoSize: <?php echo $this->_params->get('auto_size');?>,
scrolling: 'auto',
type: 'ajax',
openEffect: '<?php echo $this->_params->get('open_effect'); ;?>',
closeEffect: '<?php echo $this->_params->get('close_effect'); ?>',
helpers: {
<?php if( (int)$this->_params->get('display_overlay') == 1 ) { ?>
overlay: {
showEarly: true
}
<?php } else { ?>
overlay: null
<?php } ?>
},
ajax:{
type:'POST',
data:{
option:'com_virtuemart',
view:'productdetails',
tmpl:'component',
quickview:'showpoup',
isajax_qv:1
},
dataType:'html'
},
beforeLoad: function (){
},
afterLoad :function() {
},
beforeShow: function (){
var $_price_on_qv = $('#sj_quickview').find(".product-price"),
_id_price = $_price_on_qv.attr('id') ;
$_price_on_qv.addClass('price-on-qv');
$('.product-price').each(function(){
var $this = $(this);
if(!$this.hasClass('price-on-qv')){
if($this.attr('id') == _id_price){
$this.attr('data-idprice',_id_price);
$this.attr('id',_id_price+'_clone');
}
}
});
$("#yt_tab_products img").each(function() {
$(this).attr("src", function() {
var src = this.src;
return "<?php echo JURI::root()?>" + 'images/demo/t1.png';
})
})
$("#sj_quickview #yt_tab_products").remove();
},
afterShow: function () {
if(typeof Virtuemart !== 'undefined'){
var $_form = $("form.product",$('#sj_quickview'));
Virtuemart.product($_form);
$("form.js-recalculate").each(function(){
var _cart = $(this);
if ($(this).find(".product-fields").length && !$(this).find(".no-vm-bind").length) {
var id= $(this).find('input[name="virtuemart_product_id[]"]').val();
Virtuemart.setproducttype($(this),id);
}
});
}
},
afterClose: function (){
$('.product-price').each(function(){
var $this = $(this), _id_price = $this.attr('data-idprice') ;
if($this.attr('data-idprice') != '') {
$this.removeAttr('data-idprice');
$this.attr('id',_id_price);
}
});
}
});
setInterval(function(){ _SJQuickView(); } ,1000);
});
//]]>
</script>
<?php
$jq = ob_get_contents();
ob_end_clean();
return $jq;
}
}