我们需要在普通用户创建的每个 IGFolder 中创建隐藏的“系统”子文件夹。 图片库 Portlet 主要驻留在所有普通用户的私有社区布局上。Portlet 及其配置是预先生成的,因此普通用户无法更改它们(layout.user.[public|private].layouts.modifiable=false)。
为什么我们要这样做 在那些系统文件夹中,我们将存储自动生成的上传图像的大小版本。这是因为我们还导入了代表图片库的 WebContent/JournalArticle,这些图片库本身提供了不同大小的图片。最后,我们希望以相同的方式显示 IGFolders 和 JournalArticle 内容,而无需太多特殊代码。
我已经尝试过的
我试图通过权限(resource-actions/imgallery.xml => owner-defaults)来做到这一点,但在他自己的社区页面上,用户也是 CommunityAdmin,这赋予了他执行和查看几乎他想要的任何内容的权利。(PermissionCheckerBagImpl.isCommunityAdminImpl)
我想过创建不属于用户/他的私人社区的布局,但是在用户所属的另一个社区的公共页面上测试它并没有奏效。我根本无法让系统显示当前用户的 IGFolders,而是显示社区的文件夹。
对子文件夹使用另一个用户和组也不起作用,如果 groupId 与父文件夹中的一个不匹配,则父文件夹 id 设置为 0,因此它们根本就是更长的子文件夹 (IGFolderLocalServiceImpl.getParentFolderId)。
什么可能有效,我可能只是不正确
更改图片库 portlet/布局的所有者
以我没想到的方式摆弄许可
添加另一层组/社区
将系统文件夹放在其他地方(这当然会导致
更多代码来维护它们与
其父文件夹之间的关系)
当然,我可以使用 expandos 来标记系统文件夹——无论如何我都必须这样做——并在视图中检索后隐藏它们,但是我也不得不摆弄文件夹计数,我不想这样做,因为我觉得这不是做事的方式。
任何想法表示赞赏,请不要害羞详细说明,我对 Liferay 很陌生