[Seaside] Seaside+Bootstrap and callbacks
Paul DeBruicker
pdebruic at gmail.com
Tue Feb 19 00:04:59 UTC 2019
The #callback: as you're using it in the button doesn't render HTML to the
page. It just tells seaside to change something in the image and then
re-render.
Because of that your #action: method, if it ran, wouldn't change the page.
When Seaside re-renders your app, depending on what you do in the callback,
it might re-render the page with some changes or another page.
It looks like you want to open a modal over the current page when the button
is clicked. Right?
If so, two ways that come to mind to do that are to either, after the button
is clicked,
- re-draw the page with the modal dialog HTML code rendered in it and set
to open on load,
or
- load the modal dialog HTML code into the existing page with
Javascript/Ajax and open the modal.
The first way:
MyBootstrap>>initialize.
super initialize.
showModal:=false.
MyBootstrap>>renderContentOn: html
self renderMyButton: html
self renderMyModal: html.
MyBootstrap>>renderMyButton: html
html anchor
class:'btn btn-primary';
callback: [self showModal];
with: 'Show modal'.
html anchor
class:'btn btn-default';
callback: [self hideModal];
with: 'Hide modal'.
MyBootstrap>>showModal
showModal := true.
MyBootstrap>>hideModal
showModal := false.
My Bootstrap>>renderMyModal: html
showModal ifTrue:[
html tbsModal
id: 'myModal';
attributeAt: 'data-show' put: true; "<--- opens the modal when rendered
on the new page"
with: [ html
tbsModalDialog: [ html
tbsModalContent: [ html
etc, etc...
].
Another approach could be to use jQuery to load the modal into the page and
open it when the button is clicked.
If so I'd do it like this:
renderContentOn: html
html tbsButton
bePrimary;
onClick: ((html jQuery id: 'myModalContainer') load html:[:h | self action:
h]; onComplete:((html jQuery id: 'myModal') call: 'modal' with: 'show');
with: 'Modal'.
html div id:'myModalContainer'.
And keep your #action: method as you have it now.
Dominique Dartois-4 wrote
> I would to open a dialog like this :
>
> WAComponent subclass: #MyBootstrap
>
> MyBootstrap>>renderContentOn: html
> html tbsButton
> bePrimary;
> callback: [self action: html];
> with: 'Modal'.
>
> MyBootstrap>>action: html
> html
> html tbsModal
> id: 'myModal';
> with: [ html
> tbsModalDialog: [ html
> tbsModalContent: [ html
> etc, etc...
>
> The callback is never triggered.
>
> ---
> Dominique Dartois
>
>
>> Le 17 février 2019 à 23:23, Paul DeBruicker <
> pdebruic@
> mailto:
> pdebruic@
> > a écrit :
>>
>>
>> Seaside callbacks shouldn't be affected by bootstrap at all.
>>
>>
>> Bootstrap's javascript for their modal looks for the
>>
>> data-toggle="modal"
>>
>> attribute and sets a click handler on those elements that
>> opens/closes the
>> modal when clicked. (See the example at
>> https://getbootstrap.com/docs/4.3/components/modal/)
>>
>>
>> What are you trying to do that you can't get working?
>>
>>
>>
>>
>>
>>
>>
>> Dominique Dartois-4 wrote
>>
>> > > Hi all.
>> >
>> > I’m trying to use Bootstrap with Seaside and I don’t find the
>> notion of
>> > Callback. In the ‘Modal example’ the launch of the modal window
>> is done by
>> > a href attribute in a html statement and not a callback in the
>> Smalltalk
>> > code.
>> >
>> > The statement :
>> >
>> > html: '
>> > Launch demo modal <#myModal>
>> > '.
>> >
>> > Is it a choice for this example or is it impossible to use a
>> Callback with
>> > Bootstrap for Seaside?
>> >
>> >
>> > I am using Pharo 7 64 bits and the latest package
>> Seaside+Bootstrap.
>> >
>> > Regards,
>> > ---
>> > Dominique Dartois
>> >
>> > _______________________________________________
>> > seaside mailing list
>> >
>> > >
>>
>> > > seaside at .squeakfoundation
>> mailto:seaside at .squeakfoundation
>> >
>> > >
>>
>> > >
>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>> >
>> > >
>>
>>
>>
>>
>> --
>> Sent from: http://forum.world.st/Seaside-General-f86180.html
>> _______________________________________________
>> seaside mailing list
>>
> seaside at .squeakfoundation
> mailto:
> seaside at .squeakfoundation
>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>>
>
> _______________________________________________
> seaside mailing list
> seaside at .squeakfoundation
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
--
Sent from: http://forum.world.st/Seaside-General-f86180.html
More information about the seaside
mailing list