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



我想在新窗口或选项卡中打开所有组件dialogs。这是可能的,如果是,我该怎么做?

我正在考虑修改组件的编辑处理程序。我该怎么做?

tl; dr; dr:根据您想做的事情,这可能没有意义,但是,您可以从这里开始:

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

也许甚至https://www.magnolia-cms.com/blogs/boris-kraft/detail/detail~& headeless-or-full-bodied-cms-magnolia-provides-provides-provides-all-provides-all-the-solutions〜.html

更长的答案:这取决于您要做的事情 - 我们可以通过像这样的位置片段重新使用位置片段到达木兰的任何状态: #app:contacts:detail;/ldavinci:edit这告诉我,我们处于"联系人"应用程序的详细信息subapp中的特定路径上的编辑模式。在这种情况下,这意味着,我们在选项卡中打开了一个对话框。同样:#app:contacts:browser;/ldavinci:treeview:代表另一个状态。

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

浏览器选项卡与木兰标签不同。后者代表木兰形式中的标签,与Web浏览器无关 - 因此它不会打开。

即使我们劫持了该动作,在这种情况下您会得到的是整个木兰钻机,不是只是对话框,独立的,在新的浏览器选项卡或窗口中,不是我怀疑您对您感兴趣。如果您对对话率感兴趣,本身就独立于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:中...ETC。在兔子洞的沿线上,这些东西在木兰的背景之外意味着什么?

我想你也可以在这里看:

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

您无论如何都可以通过我们的REST API编辑这些数据,因此也许您正在尝试将对话框移出木兰以沿线完成一些操作?

最新更新