1

通常のユーザーが作成するすべてのIGFolderに非表示の「システム」サブフォルダーを作成する必要があります。 画像ギャラリーポートレットは、主にすべての通常のユーザーのプライベートコミュニティレイアウトにあります。ポートレットとその構成は事前に生成されているため、通常のユーザーはそれらを変更できません(layout.user。[public | private] .layouts.modizable = false)。

これを行う理由 これらのシステムフォルダには、アップロードされた画像の自動生成されたサイズのバージョンが保存されます。これは、さまざまなサイズの画像自体を提供する画像ギャラリーを表すWebContent/JournalArticleもインポートするためです。最終的には、IGFoldersとJournalArticleの両方のコンテンツを、特別なコードをあまり使用せずに同じ方法で表示したいと考えています。

私がすでに試したこと

  • 私はパーミッション(resource-actions / imgallery.xml => owner-defaults)を介してこれを実行しようとしましたが、彼自身のコミュニティページでは、ユーザーはCommunityAdminでもあり、彼が望むほとんどすべてのことを実行および表示する権限を与えます。(PermissionCheckerBagImpl.isCommunityAdminImpl)

  • ユーザー/彼のプライベートコミュニティに属さないレイアウトを作成することを考えましたが、ユーザーが属する別のコミュニティのパブリックページでこれをテストすることはできませんでした。現在のユーザーのIGFoldersをシステムに表示させることができません。代わりに、コミュニティのフォルダーが表示されます。

  • サブフォルダーに別のユーザーとグループを使用しても機能しませんでした。groupIdが親フォルダーの1つと一致しない場合、親フォルダーIDは0に設定されるため、サブフォルダーは長くなります(IGFolderLocalServiceImpl.getParentFolderId)。

何がうまくいくかもしれません、そして私はおそらくちょうどうまくいかないでしょう

  • 画像ギャラリーポートレット/レイアウトの所有者を変更する

  • 私が考えていなかった方法で許可をいじる

  • グループ/コミュニティの別のレイヤーを追加する

  • システムフォルダを別の場所に配置します(もちろん、システムフォルダ
    とその
    親フォルダの間の関係を維持するためのコードが増えます)

もちろん、expandosを使用してシステムフォルダにフラグを立てることができます-とにかく行う必要があります-ビューで取得した後にそれらを非表示にすることもできますが、フォルダ数をいじる必要があります。これは物事を行う方法ではありません。

どんなアイデアでもありがたいです、詳しく説明するのを恥ずかしがらないでください、私はLiferayにかなり新しいです

4

1 に答える 1

1

フックプラグインを作成してオーバーライドできます(おそらくこのファイル)

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

「システム」フォルダが存在する場合は無視するコードを追加できます。おそらく、すべての「システム」フォルダーは、テストできる同じ名前 (「_SYSTEM_FOLDER_」など) を持つことができます。

これはフォルダを非表示にするだけなので、誰かが folderId を知っていて、それを表示/編集する権限を持っている場合、アクセスするための URL を作成できることに注意してください。

于 2011-11-17T20:24:48.727 に答える