[Seaside] Seaside+Bootstrap and callbacks

Dominique Dartois dom at dartois.org
Fri Feb 22 20:44:53 UTC 2019


Thank you Paul for the time you spend writing this code.
I can see the <div> in the debugger appearing if I click the show button and desappearing with a click on Hide, BUT the modal window doesn’t show up.
I have read on https://stackoverflow.com/questions/18855331/bootstrap-3-data-show-not-working that the modal must be initialized first with something like :
<script type="text/javascript">
$( function(){
$('#myModal').modal();
} )
</script>

I am trying to put this code in the WAComponent>>updateRoot: method without success.

Regards,
---
Dominique


>     Le 19 février 2019 à 01:04, Paul DeBruicker < pdebruic at gmail.com mailto:pdebruic at gmail.com > a écrit :
> 
> 
>     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
> > >             mailto: 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
> > 
> >     > 
> 
>         > >         mailto:
> > 
> >     > 
> 
>         > >         seaside at .squeakfoundation mailto:seaside at .squeakfoundation
> > 
> >     > 
> 
>         > > 
> >             > > >             http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
> > > 
> > > 
> > >         > > 
> >         _______________________________________________
> >         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 lists.squeakfoundation.org mailto:seaside at lists.squeakfoundation.org
>     http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/seaside/attachments/20190222/25d6d9c0/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 35262 bytes
Desc: not available
URL: <http://lists.squeakfoundation.org/pipermail/seaside/attachments/20190222/25d6d9c0/attachment-0001.png>


More information about the seaside mailing list