VirtueMart Forum

VirtueMart 2 + 3 + 4 => Virtuemart Development and bug reports => Topic started by: SniperSister on February 28, 2012, 19:35:47 PM

Title: Bugfix: Avoiding JQuery collisions
Post by: SniperSister on February 28, 2012, 19:35:47 PM
Hi,

there is a whole bunch of issues which is related to collisions of different jquery versions which are loaded simultaneously. To avoid at least some of those collisions, i changed the file /administrator/components/com_virtuemart/helpers/config.php in lines 793 and 813, so that the method vmJsApi::jQuery looks like this:

function jQuery() {
if ( JFactory::getApplication()->get('jquery')) return false; // <------- new line!!
if ( !VmConfig::get('jquery',true ) && JFactory::getApplication()->isSite()) return false;
static $jquery;
// If exist exit
if ($jquery) return;
$document = JFactory::getDocument();
if(VmConfig::get('google_jquery',true)){
$document->addScript('//ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js');
$document->addScript('//ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js');
} else {
$document->addScript(JURI::root(true).'/components/com_virtuemart/assets/js/jquery.min.js');
$document->addScript(JURI::root(true).'/components/com_virtuemart/assets/js/jquery-ui.min.js');
}
$document->addScript(JURI::base().'components/com_virtuemart/assets/js/jquery.ui.autocomplete.html.js');
$document->addScript(JURI::base().'components/com_virtuemart/assets/js/jquery.noConflict.js');

//JHTML::script('jquery.min.js', '//ajax.googleapis.com/ajax/libs/jquery/1.6.1/', false);
/*$document = JFactory::getDocument();
$document->addScriptDeclaration('jQuery.noConflict();');*/

$jquery = true;
                JFactory::getApplication()->set('jquery',true); <------ new line!
return true;
}


As you can see, i added the check if ( JFactory::getApplication()->get('jquery')) return false; because quite a lot Joomla extensions (all kind of yootheme extensions, k2, seblod...) are setting this parameter when they are loading jquery for the first time. On top of that, i added the line JFactory::getApplication()->set('jquery',true); to add support for this best practice to Virtuemart.

Best regards
David
Title: Re: Bugfix: Avoiding JQuery collisions
Post by: Milbo on February 28, 2012, 20:01:44 PM
great, thank you, I add it now, very nice. I thought all the time, we seem to miss some knowledge, even we are atm quite good connected with some joomla developers.
Title: Re: Bugfix: Avoiding JQuery collisions
Post by: HC on March 03, 2012, 17:29:28 PM
Hi Milbo

I'm not sure wether this jquery issue is the same as the one we are discussing here:
https://forum.virtuemart.net/index.php?topic=95979.msg326766#msg326766 (https://forum.virtuemart.net/index.php?topic=95979.msg326766#msg326766)
If it is, can you say something about when the next update is published including the bugfix?

I tried to insert the corrected php code, but it didn't help my issue - the Add to cart-button will not update the basket, only if I reload the page, the basket is showing the product. http://ny.udviklingsvej.dk/webshop/online-kurser-og-uddannelser/testprodukt-detail (http://ny.udviklingsvej.dk/webshop/online-kurser-og-uddannelser/testprodukt-detail)
It would indeed be nice to see a published fix for this particular problem, which doesn't seems to have any solutions yet in this forum.

Thanks a million