On 3/29/2011 5:12 PM, jeff@ayendesigns.com wrote:
That's the clean way to do it, and I would if I were in control of the handshaking, but because Ctools is doing the handling of the link click and the construction of the AJAX handshaking, I can't just package it up and send it...I need to find the right 'box and forms' to get it to accept, carry and deliver my package for me.
This is how CTools binds to links, normally: (There's a couple of other methods as well, but they're all similar). $('a.ctools-use-ajax:not(.ctools-use-ajax-processed)', context) .addClass('ctools-use-ajax-processed') .click(Drupal.CTools.AJAX.clickAJAXLink); If you need special handling of the link, what you probably need to do is bind yourself, and then use your own version of clickAJAXLink that gets your data and does what it needs. That function isn't very long: /** * Generic replacement click handler to open the modal with the destination * specified by the href of the link. */ Drupal.CTools.AJAX.clickAJAXLink = function() { if ($(this).hasClass('ctools-ajaxing')) { return false; } var url = $(this).attr('href'); var object = $(this); $(this).addClass('ctools-ajaxing'); try { url = url.replace(/\/nojs(\/|$)/g, '/ajax$1'); $.ajax({ type: "POST", url: url, data: { 'js': 1, 'ctools_ajax': 1}, global: true, success: Drupal.CTools.AJAX.respond, error: function(xhr) { Drupal.CTools.AJAX.handleErrors(xhr, url); }, complete: function() { $('.ctools-ajaxing').removeClass('ctools-ajaxing'); }, dataType: 'json' }); } catch (err) { alert("An error occurred while attempting to process " + url); $('.ctools-ajaxing').removeClass('ctools-ajaxing'); return false; } return false; }; You can either modify the href and then call through to it, or just replace it as you need.