fRiSi
fRiSi

Reputation: 1238

plone4: open overlay with ajax content w/o binding to click

$('.selector').prepOverlay() from plone.app.jquerytools works fine when binding a popup to 'onClick' and load it's content from the url provided by one of the href/src/rel attributes.

<a class=".selector" href="link/to/@@view">link</a>

i've got the usecase where i load my content via ajax manually, check it for certain conditions and if these are met i want to show the content returned by the ajax request in an overlay:

jQuery.ajax({
    type: 'GET',
    url: portal_url + '/@@my-popup',
    success: function(r) {
        if (r != '') {

            // show Overlay

        }
    }
});

what i currently do to show the overlay is:

create a link item, bind an overlay to it and open it

var link = $('<a href="' + portal_url + '/@@my-popup"></a>')

link.prepOverlay({
    subtype:'ajax',
});
link.click();

however, this results in two requests for '/@@my-popup'

is there a nicer way to get arbitrary content into the overlays created with prepOverlay?

Upvotes: 2

Views: 103

Answers (2)

SteveM
SteveM

Reputation: 6048

The only real purpose of Plone's prepOverlay is to automate the conversion of links or images into simple jquerytools overlays. In your case, it's just getting in the way. So, don't use prepOverlay. Just directly use jquerytools' overlay facility.

Upvotes: 4

Mathias
Mathias

Reputation: 6839

Nope, unfortunately not.

If you look closer to the prepOverlay function, you see the following line:

// be promiscuous, pick up the url from
// href, src or action attributes
src = o.attr('href') || o.attr('src') || o.attr('action');

This means you're not able to trigger the overlay, without having a element with href, src or action attribute.

You may write your own prepOverlay method, wich does not iterate over some elements, but takes a specific url as param.

Upvotes: 3

Related Questions