Entity Group Field
Entity フォームや表示画面でグループの関連付けを直接表示・管理できる computed field を提供します。
entitygroupfield
概要
Entity Group Field は、Group モジュールに関連付けられた任意の Entity タイプに設定できる computed field を提供するモジュールです。十分な権限を持つユーザーは、Entity を閲覧しながらグループの関連付けを直接確認したり、Entity の編集中にグループの関連付けを管理したりできます。
このモジュールは、インストールされている Group relation type plugin(Node 用の gnode など)に基づいて、どの Entity がグループに所属できるかを自動的に検出します。関連付けを管理するための2つのウィジェットオプション(select ドロップダウンとオートコンプリート)と、グループ情報を表示するための4つのフォーマッターオプションを提供します。モジュールは Group の権限システムを尊重し、現在のユーザーがコンテンツを追加する権限を持つグループのみを表示します。
一般的なユースケースには、Node 編集フォームから Node が所属するグループを管理したり、ユーザープロフィールフォームからユーザーのグループメンバーシップを直接管理したりすることが含まれます。
Features
- Group relation plugin が有効な任意の Entity タイプのグループ関係を自動的に検出・表示する computed field
- optgroups でグループタイプ別に整理されたドロップダウンを提供し、ユーザーがコンテンツを追加する権限を持つグループのみを表示する select ウィジェット
- 多数のグループを持つサイト向けに、権限フィルタリング付きの先行入力検索機能を提供するオートコンプリートウィジェット
- グループページへのリンクをオプションで設定できる、グループ名を表示する親グループラベルフォーマッター
- 設定された任意の view mode でグループを表示できる親グループ rendered entity フォーマッター
- 数値のグループ識別子を表示する親グループ ID フォーマッター
- ページリロードなしでグループの関連付けを追加・削除できる AJAX 対応インターフェース
- 既存のグループ関係を管理するための Edit、Remove、Collapse、Restore 操作を備えた Dropbutton インターフェース
- Group 2.x(group_content)と Group 3.x(group_relationship)の両方の Entity タイプをサポート
- ユーザーが適切なアクセス権を持つグループにのみコンテンツを追加できることを保証する権限認識型バリデーション
- 複数値、必須フィールドバリデーション、カスタムラベル、ヘルプテキストなどの設定可能なウィジェット設定
- モジュールアンインストール時のフィールド設定の自動クリーンアップ
Use Cases
Node 編集フォームからの Node グループ割り当ての管理
Node フォーム表示(例:/admin/structure/types/manage/article/form-display)で、select またはオートコンプリートウィジェットを使用して「Groups」フィールドを有効にします。コンテンツ編集者は、グループ管理ページに移動することなく、コンテンツの作成または編集中に Node をグループに追加できます。
ユーザープロフィールからのユーザーグループメンバーシップの管理
ユーザーフォーム表示(/admin/config/people/accounts/form-display)で「Group memberships」フィールドを有効にします。管理者は、ユーザー編集フォームから直接ユーザーが所属するグループを管理でき、ユーザー管理ワークフローが効率化されます。
コンテンツページでのグループ所属の表示
リンクを有効にした「Parent group label」フォーマッターを使用して、コンテンツビュー表示で「Groups」フィールドを有効にします。訪問者はコンテンツがどのグループに所属しているかを確認し、グループページにクリックスルーできるため、コンテンツの発見とナビゲーションが向上します。
カスタムスタイリングでのグループ情報の表示
カスタム view mode と共に「Parent group rendered entity」フォーマッターを使用して、コンテンツと一緒にリッチなグループ情報(グループロゴや説明など)を表示し、コンテンツの組織的な所属についてより多くのコンテキストを提供します。
Tips
- computed field は異なるデフォルトラベルを使用します:ユーザー Entity には「Group memberships」、その他すべての Entity には「Groups」です。これらのラベルをカスタマイズするには Base Field Override UI モジュールを使用してください。
- select ウィジェットは HTML optgroups を使用してグループをグループタイプ別に整理するため、複数のグループタイプを持つサイトで特定のグループを見つけやすくなります。
- ユーザーがどのグループにもコンテンツを追加する権限を持っていない場合、ウィジェットは追加ボタンなしで「Not yet added to groups」と表示します。これは Group の権限に基づく想定どおりの動作です。
- オートコンプリートウィジェットはフォーム送信時に権限検証を実行し、ユーザーが手動でグループ ID を入力しても、アクセス権のないグループにコンテンツを追加することを防ぎます。
- 「multiple」設定が有効な場合、両方のウィジェットはグループ関連付けのドラッグ&ドロップによる並べ替えをサポートします。
- グループの関連付けは、ウィジェットで追加したときではなく、Entity の保存時に保存されます。折りたたまれたときに未保存の変更がある場合は警告メッセージが表示されます。
Technical Details
Hooks 4
hook_entity_base_field_info
Group relation plugin が有効なすべての Entity タイプに computed「entitygroupfield」ベースフィールドを追加します。フィールドは、ユーザー Entity の場合は「Group memberships」、その他すべての Entity タイプの場合は「Groups」という名前が自動的に付けられます。
hook_theme
ウィジェット内の操作ボタンをレンダリングするために使用される「entitygroupfield_dropbutton_wrapper」テーマフックを定義します。
hook_field_formatter_info_alter
Core の「entity_reference_entity_view」フォーマッターがサポートするフィールドタイプに「entitygroupfield」を追加し、「Rendered entity」フォーマッターオプションを有効にします。
hook_uninstall
モジュールがアンインストールされるときに、すべての Entity フォーム表示とビュー表示設定から entitygroupfield コンポーネントを削除してクリーンアップします。