[Seaside] Seaside+Bootstrap and callbacks
Paul DeBruicker
pdebruic at gmail.com
Sun Feb 24 00:43:05 UTC 2019
Yea if you change the modal initialization JS to
html document addLoadScript: ((html jQuery id: 'myModal') call: 'modal'
with: self modalOptions).
MyComponent>>#modalOptions
^Dictionary new
at: 'backdrop' put: 'static';
yourself;
It'll keep the modal from closing when someone clicks outside the modal
Its described here:
https://getbootstrap.com/docs/4.3/components/modal/#options
Dominique Dartois-4 wrote
> You are right it's a better approach. The logic is more centralized.
> An other thing I am discovering : the modal window is not really modal
> because if I click out of the dialog the window closes. I think it's more
> on the Bootstrap side than on the seaside one.
>
> Regards
> ---
> Dominique Dartois
>
>> Le 22 février 2019 à 23:29, Paul DeBruicker <
> pdebruic@
> > a écrit :
>>
>>
>> Glad you got it sorted out.
>>
>> Another approach than your #updateRoot: approach is in the rendering
>> method
>> in the component that renders the modal do a
>>
>>
>> html document addLoadScript: ((html jQuery id: 'myModal') call: 'modal').
>>
>> Then all the modal creation stuff will be in the same method.
>>
>>
>>
>>
>>
>>
>> Dominique Dartois-4 wrote
>> > Finally, I've found the right syntax to initialize the modal window :
>> >
>> > updateRoot: anHtmlRoot
>> > super updateRoot: anHtmlRoot.
>> > anHtmlRoot bodyAttributes at: 'onLoad' append: '$(
>> > function(){$(''#myModal'').modal();})'.
>> >
>> > Thanks again Paul.
>> > ---
>> > Dominique Dartois
>> >
>> >> Le 22 février 2019 à 21:44, Dominique Dartois <
>>
>> > dom@
>>
>> > > a écrit :
>> >>
>> >> 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 :
>> >>
>>
>> >>
>> >> 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@
>>
>> > mailto:
>>
>> > pdebruic@
>>
>> > > 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 .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
>> >>
>> >
>> >
>> >
>> > _______________________________________________
>> > seaside mailing list
>>
>> > seaside at .squeakfoundation
>>
>> > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>> >
>> >
>> > image.png (47K)
>> > <http://forum.world.st/attachment/5095917/0/image.png>
>>
>>
>>
>>
>>
>> --
>> Sent from: http://forum.world.st/Seaside-General-f86180.html
>> _______________________________________________
>> seaside mailing list
>>
> 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