Hi René,
Hm, I think both would be great. For simple dialogs it's easier
if
showDialog accepts DOM elements, but there are some use cases where it's
better to provide a contentUrl.
Exactly, for simple UI, contentElement approach has less overhead and is arguably more
convenient, too.
For complex UI, it's indeed a matter of use-case or preference. For example, some
plugin authors might prefer having both UI logic and markup hosted via server, while
others might go with "do all UI on client and just query server for
data/operations" approach.
Regards,
Vojtech
----- Original Message -----
From: "René Koch (ovido)" <r.koch(a)ovido.at>
To: "Vojtech Szocs" <vszocs(a)redhat.com>
Cc: "ovirt-users" <users(a)ovirt.org>
Sent: Wednesday, March 6, 2013 8:49:50 PM
Subject: Re: [Users] UI Plugin iframe dialogs
Hi Vojtech,
On Mon, 2013-03-04 at 08:07 -0500, Vojtech Szocs wrote:
Hi René, sorry for replying late!
> I will go for the showDialog API method, as I think I will not into troubles in
future oVirt version and avoid hacks.
> It would be really great if showDialog would be able to create these nice oVirt
dialogs in addition to opening new windows.
There's a patch for improving showDialog API/implementation to integrate with
standard WebAdmin dialog look & feel :)
http://gerrit.ovirt.org/#/c/11717/
Still a work-in-progress, but we're planning to finalize/merge it soon!
I'll have a look at this patch!
For now, you can use the current showDialog API, e.g. api.showDialog('Dialog
Title', 'http://www.example-content.com/', 640, 480);
I have one question for you: would you prefer if new showDialog API supported accepting
DOM elements instead of contentUrl string? For example (using jQuery):
var $content = $('<div>Custom dialog content</div>');
var contentElement = $content.get();
api.showDialog('Dialog Title', contentElement, 640, 480);
[In other words, UI plugin could build custom UI directly on client, instead of having to
ask server to provide it.]
Hm, I think both would be great. For simple dialogs it's easier if
showDialog accepts DOM elements, but there are some use cases where it's
better to provide a contentUrl.
So for me it would be great if contentUrls and contentElements would be
possible. :)
Regards,
René
Regards,
Vojtech
----- Original Message -----
From: "René Koch" <r.koch(a)ovido.at>
To: "Vojtech Szocs" <vszocs(a)redhat.com>
Cc: "ovirt-users" <users(a)ovirt.org>
Sent: Sunday, February 24, 2013 7:31:47 PM
Subject: RE: [Users] UI Plugin iframe dialogs
Thanks a lot for your answer and sorry for my late response - I skipped dialogs for my
first UI plugin release, but have to deal with it in the next release again.
I will go for the showDialog API method, as I think I will not into troubles in future
oVirt version and avoid hacks.
It would be really great if showDialog would be able to create these nice oVirt dialogs
in addition to opening new windows.
Regards,
René
-----Original message-----
> From:Vojtech Szocs <vszocs(a)redhat.com>
> Sent: Wednesday 6th February 2013 18:54
> To: René Koch <r.koch(a)ovido.at>
> Cc: ovirt-users <users(a)ovirt.org>
> Subject: Re: [Users] UI Plugin iframe dialogs
>
> Hi René, this is an interesting problem.
>
> UI plugin infrastructure loads individual plugins via dedicated iframe elements by
design, with iframes serving the purpose of plugin runtime environment that is (more or
less) sandboxed with regard to WebAdmin (top-level window) and other plugins. This allows
a plugin to load whatever JavaScript libraries, styles etc. without any impact on WebAdmin
or other plugins, so that the plugin itself is kind of 'HTML/JS application' on
its own, contained within the iframe. Interaction between a plugin and WebAdmin happens
through the pluginApi object, plugins are not meant to modify WebAdmin top-level DOM
directly on their own. (I'll post a detailed email on this later on.)
>
> Aside from plugin code itself running within an iframe, you have a custom sub-tab
that renders some URL content via another iframe (this is another 'content'
iframe, not related to plugin host page iframe).
>
> > When creating a new (big) jQuery dialog in an sub tab-iframe (sub tab of
> > selected vm or host) it can't be displayed without scrolling in the sub
> > tab or resizing the sub tab (that's clear as it's displayed in an too
> > small iframe).
>
> Yes, because the jQuery dialog is shown within the sub-tab content iframe window.
>
> > So it would be great if it would be possible to display dialogs in the
> > middle of the main windows and overlap the iframe (don't know if this is
> > possible).
>
> Yes, this is possible :)
>
> There are two options you can go with:
>
> 1, use showDialog API to render custom dialog whose content is rendered via iframe
> - you need to provide URL for the dialog content
> - this is the preferred way of showing custom dialogs
> Note: showDialog API is currently under improvement, see
http://gerrit.ovirt.org/#/c/11717/
>
> 2, [hacky workaround] use 'parent' within the iframe to reference top-level
WebAdmin window
> - your plugin can show jQuery dialog within the context of WebAdmin DOM
(parent.document)
> - for example:
> var $dialog = $('<div
title="Title">Content</div>');
> var dialogElement = $dialog.get();
> parent.document.body.appendChild(dialogElement);
> $dialog.dialog();
>
> 3, [planned for future] extend showDialog to accept DOM element in addition to
content URL
> - this way, you can build your dialog content with JavaScript and put it inside
the dialog
> - you would still use showDialog API, in preference to direct WebAdmin DOM
manipulation
>
> In general, plugins are not meant to modify WebAdmin top-level DOM directly on their
own, because doing so imposes a fragile bond between WebAdmin DOM structure (which is very
likely to change) and plugin code. Instead, plugins should use pluginApi object for
extending specific parts WebAdmin UI (e.g. addMainTab, addSubTab, etc.).
>
> Let me know what you think.
>
> Vojtech
>
>
> ----- Original Message -----
> From: "René Koch (ovido)" <r.koch(a)ovido.at>
> To: "ovirt-users" <users(a)ovirt.org>
> Sent: Wednesday, January 30, 2013 4:47:54 PM
> Subject: [Users] UI Plugin iframe dialogs
>
> Hi,
>
> I'm still working on my Nagios integration plugin and came across a
> limitation of the UI plugin framework caused by iframes.
>
> UI framework creates an iframe for each plugin, so the plugin code is
> separated from the main oVirt webadmin code (and other plugins). When
> creating a new (big) jQuery dialog in an sub tab-iframe (sub tab of
> selected vm or host) it can't be displayed without scrolling in the sub
> tab or resizing the sub tab (that's clear as it's displayed in an too
> small iframe).
>
> So it would be great if it would be possible to display dialogs in the
> middle of the main windows and overlap the iframe (don't know if this is
> possible). In short terms I want to create a dialog which behaves like
> e.g. the "Setup Host Networks" or "Add Permission to User"
dialogs ->
> click on a link in the plugin iframe and dialog opens in the middle of
> the website not the middle of the iframe.
>
> What I found out so far is that:
> 1. I must be aware of the same origin policy (that's no problem)
> 2. I need to put my jQuery-dialog-code in the main oVirt windows and
> then I can call it from within the iframe (that's my problem)
>
> So my questions are:
> Is it possible to place code outside of the iframe?
> If not - are there plans to allow this in future releases?
> Or maybe is there a workaround?
>
>
> Thanks a lot,
> René
>
>
>
> _______________________________________________
> Users mailing list
> Users(a)ovirt.org
>
http://lists.ovirt.org/mailman/listinfo/users
>