我想在新的窗口或标签中打开所有组件对话框。这是可能的,如果是的话,我该怎么做?
我正在考虑修改组件的编辑处理程序。我将如何以及在哪里这样做?
答案 0 :(得分:1)
<强> TL; DR:强> 根据你想做的事情,它可能没有意义,但是,你可以从这里开始:
info.magnolia.ui.contentapp.detail.action.EditItemActionDefinition
info.magnolia.ui.dialog.formdialog.FormDialogPresenterImpl
更长的回答:
这取决于你想要做什么 - 我们可以通过重新使用像这样的位置片段到达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来完成这条线上的某些事情?