Liferay 6.0.5 - 在私人社区的私人/公共布局上隐藏IGFolders

时间:2011-08-05 13:55:53

标签: permissions hide liferay owner liferay-6

我们需要在普通用户创建的每个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来说很新鲜

1 个答案:

答案 0 :(得分:1)

您可以在其中创建钩子插件并覆盖(可能是此文件)

/portal/portal-web/docroot/html/portlet/image_gallery/view_folders.jsp

在那里你可以添加代码来忽略你的“系统”文件夹(如果存在)。也许所有“系统”文件夹都可以具有相同的名称(例如“_SYSTEM_FOLDER_”),您可以对其进行测试。

请注意,这只是隐藏文件夹,因此如果有人知道folderId并且有权查看/编辑它,则可以创建URL来访问它。

相关问题