Magnolia defaultAction 与从操作栏中单击实际操作在获取 JCR 项目方面的区别

Posted

技术标签:

【中文标题】Magnolia defaultAction 与从操作栏中单击实际操作在获取 JCR 项目方面的区别【英文标题】:Magnolia defaultAction vs clicking the actual action from the action bar difference in getting JCR item 【发布时间】:2016-05-09 04:00:40 【问题描述】:

在 Magnolia 中,以下 2 种场景获取相关项的 JCR 节点(relatedItem.getJcrItem())是否有区别:

    有一个 defaultAction 是为操作栏定义的“编辑项目”。双击工作台列表中的项目,将打开一个对话框以允许我进行编辑。然后我点击“取消”。然后我从操作栏中单击“添加项目”。

    单击项目,然后单击“编辑项目”,将打开一个对话框以允许我进行编辑。然后我点击“取消”。然后我从操作栏中单击“添加项目”。

我注意到目前在场景 1 中,JCR 节点将是我之前选择的项目的节点,这不应该是这种情况。应该是一个新节点,因此这种情况下的 relatedItem.getJcrItem() 应该是添加新项目的父节点项目。

场景2在调用relatedItem.getJcrItem()时显示了正确的节点。

由于这种行为,场景 1 会将新项目保存为先前选择的项目的子节点。

我希望我能清楚地解释这一点。有人对这个问题有任何想法吗?

谢谢!

【问题讨论】:

两种方案有什么区别?我的意思是两者似乎都遵循相同的模式和相同的动作,不是吗? @Ducaz035 第一个场景使用双击来编辑项目。第二个场景使用操作栏中的操作来编辑项目。尽管是的,两者都指向相同的动作。然而,问题是,在场景 1 中取消对话框后,当我尝试添加新项目时,该项目被保存为我双击的上一个项目的子节点。它应该是前一个项目的兄弟。你明白我的意思了吗? 是的,我现在知道了,谢谢您的澄清。也许这里的问题是列表中的选定项目在两种方法中有所不同。您能告诉我您在这些场景中使用的是哪个应用程序吗? @Ducaz035 实际上我正在使用自定义应用程序,但您也可以在安全应用程序中轻松复制它,但是您需要通过删除此节点来更改安全应用程序的配置:/modules/安全应用/应用/安全/子应用/用户/操作/addUser/availability/nodeTypes。通过删除此节点,您可以在单击对话框中的取消后“添加用户”。因此,在应用配置中的更改后,您可以尝试执行方案 1,您会看到在“添加用户”之后,新用户将位于您之前双击的用户的节点下。谢谢! :) 好吧,那就解释这个案子,我会尽快写一个答案,总结你可能会做什么,干杯。 【参考方案1】:

正如您在上面的 cmets 中提到的,Magnolia 通过为添加操作添加可用性规则来防止这些错误,因为基本上是文件夹结构。它保留您的选择,因此如果未选择文件夹,则添加操作不可用。如果您想实现这一点,那么您应该创建自己的操作,并在取消时选择给定项目的父节点。

干杯,

【讨论】:

@Ducaz0305 我不认为我正在使用 OpenEditDialogAction 的 onPostExecute 方法?好的,既然 Magnolia 使用此可用性规则,那么这意味着用户尝试双击用户节点,然后取消弹出的对话框的安全应用程序中的场景将导致用户无法单击“添加用户” ” 再说了,这个场景其实是白玉兰故意的,我的理解对吗?虽然我发现这种无法“添加用户”的行为看起来像是一个错误。 我想说这不是一个错误,因为您正在选择一个用户并且您的选择没有改变,因此无法添加用户,因为您的选择确实是一个用户并且您是必需的选择一个文件夹以在其下方添加用户。那里有一种带有文件(用户)和文件夹的树结构。对于 onPostExecute,我更改了答案,因为您没有使用命令操作,因此它不可用。 我更新了我的答案并试图给出如何实现它的想法,但行为似乎是正确的,因此是预期的。 好的,谢谢你的建议! :) 对于 Magnolia App 的行为,可能是因为 UI 没有显示该项目已被选中(实际上工作台将显示“未选择项目”并且启用了“添加用户”,这令人困惑并且看起来像一个错误。无论如何,谢谢!:) 为了进一步改进,我认为 Magnolia 可以避免这种混乱,如果双击该项目并单击“取消”,所选项目也会在工作台中突出显示,就像您手动时的行为一样单击编辑操作而不是双击。这样,它不会让用户感到困惑,人们也不会仅仅为了迎合这部分而进行定制。 :)

以上是关于Magnolia defaultAction 与从操作栏中单击实际操作在获取 JCR 项目方面的区别的主要内容,如果未能解决你的问题,请参考以下文章

Magnolia 激活模块(5.2.3 版)确保 Magnolia 属性文件中存在密钥属性“magnolia.author.key.location”

将自定义字段从 magnolia 5 移动到 magnolia 6

Magnolia CMS : 介绍 Magnolia 教程不适用于 Magnolia CE 和 EE

Magnolia 5.5.5 Magnolia 中的索引配置

如何在空白 magnolia 实例上安装 magnolia 的 Travel Demo 项目

基本 Magnolia 项目无法启动