Magnolia 5.5.5 - 在新窗口中打开对话框

时间:2017-11-23 09:53:02

标签: magnolia

我想在新的窗口或标签中打开所有组件对话框。这是可能的,如果是的话,我该怎么做?

我正在考虑修改组件的编辑处理程序。我将如何以及在哪里这样做?

1 个答案:

答案 0 :(得分:1)

<强> TL; DR: 根据你想做的事情,它可能没有意义,但是,你可以从这里开始:

info.magnolia.ui.contentapp.detail.action.EditItemActionDefinition
info.magnolia.ui.dialog.formdialog.FormDialogPresenterImpl

甚至可能https://www.magnolia-cms.com/blogs/boris-kraft/detail~&headless-or-full-bodied-cms--magnolia-provides-all-the-solutions~.html

更长的回答: 这取决于你想要做什么 - 我们可以通过重新使用像这样的位置片段到达Magnolia中的任何州:#app:contacts:detail;/ldavinci:edit 这告诉我,我们处于联系人应用程序的详细子应用程序中特定路径(来自某个工作区的根目录)的编辑模式。在这种情况下,这意味着,我们在选项卡中打开了一个对话框。 同样:#app:contacts:browser;/ldavinci:treeview:代表另一个州。

因此,如果我们知道这些位置片段的部分,我们就可以以编程方式移动到新位置。但这些是 Magnolia中的位置(app,subapp,path),而不是Web浏览器。

浏览器标签与Magnolia标签不同;后者代表Magnolia形式的标签,并且与网络浏览器没有任何关系 - 所以它不会打开。

即使我们劫持了这个动作,你在这种情况下得到的是整个Magnolia装备,只是对话框,独立,在新的浏览器标签或窗口中,并不是我怀疑你感兴趣的。如果你对对话本身感兴趣,独立于Magnolia UI的其余部分,你可能不得不开始看

info.magnolia.ui.dialog.formdialog.FormDialogPresenterImpl
146     public DialogView start(..
which calls
165     private void buildView(..
and sets up overlays, etc.
(sepcifically through 167         formPresenter.presentView(..)
...

那么如果我们在这里看一下:

info.magnolia.ui.dialog.formdialog.FormPresenterImpl:
123         buildForm((FormView) this.formView, formDefinition, item, parent, activeLocale);

最终称这个人为

198     private void buildReducedForm(..

并将其添加到具有特定模态的现有FormViewReduced(info.magnolia.ui.vaadin.form.FormViewReduced)。

FVR由

实施
info.magnolia.ui.vaadin.form.Form

这应该是实际显示表格的内容。

,表单显示在

info.magnolia.ui.vaadin.tabsheet.MagnoliaTabSheet

所以info.magnolia.ui.vaadin.gwt.client.tabsheet.widget.MagnoliaTabSheetViewImpl: ...等等。而且在兔子洞的下方,这些东西在Magnolia的背景下意味着什么呢?

我想你也可以看一下:

info.magnolia.ui.contentapp.detail.action.EditItemActionDefinition

你可以通过我们的REST API编辑这些数据,所以也许你正试图将对话框移出Magnolia来完成这条线上的某些事情?