From 60bab2b0b2ee138fe713f2152008ca61ad03c7c7 Mon Sep 17 00:00:00 2001 From: Yuri Salimovskiy Date: Fri, 24 Mar 2023 13:27:32 +0200 Subject: [PATCH 1/3] members field docs --- docs/_images/field_members.png | Bin 0 -> 16845 bytes docs/fieldtypes/member.md | 173 ++++++++++++++++++++ docs/toc_sections/_the_fundamentals_toc.yml | 2 + 3 files changed, 175 insertions(+) create mode 100644 docs/_images/field_members.png create mode 100644 docs/fieldtypes/member.md diff --git a/docs/_images/field_members.png b/docs/_images/field_members.png new file mode 100644 index 0000000000000000000000000000000000000000..ef0933aba80df1ce0ab69387f0f6516aeb3e5dbf GIT binary patch literal 16845 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 literal 0 HcmV?d00001 diff --git a/docs/fieldtypes/member.md b/docs/fieldtypes/member.md new file mode 100644 index 000000000..87d303710 --- /dev/null +++ b/docs/fieldtypes/member.md @@ -0,0 +1,173 @@ + + +# Members Fieldtype + +Members Fieldtype allows selecting one or multiple members and associating those with a channel entry + +[TOC] + +Relationships are an extremely powerful tool that allow you to connect Entries in one Channel to those in another one, or even to other entries in the same channel. This ability allows you to store very complex content in your Channel entries. + +This fieldtype is currently only limited to Channels. + +![members field](_images/field_members.png) + +## Field Settings + +#### Roles to include + +Only allow selecting member with chosen primary roles. Note that secondary roles are not being taken into account when working with Members field. + +#### Maximum number of available members + +Sets the number of members displayed in the field's dropdown. Leave blank to allow all members. All members are still available to the search, this is simply a display setting. + +#### Order By + +Default ordering of members in the field's dropdown. + +#### Allow Multiple Relationships? + +When set to yes, authors will be allowed to create multiple relationships in a single field. + +#### Minimum selection +The minimum number of relationships that can be added to the field. + +#### Maximum selection +The maximum number of relationships that can be added to the field. + +#### Display Member IDs? +When enabled, member IDs will be displayed together with member screen name inside the field. + +#### Defer field initialization? +When enabled, this field won’t initialize until the Edit Relationships button is clicked on. This can result in faster control panel page load times. + +## Template Tag Pair + +The field is most useful when used as tag pair in the template. All variables are prefixed with the field's short name, followed by semicolon, to avoid naming conflicts. + + {members_field} +
Date: Thu, 1 Feb 2024 10:28:24 +0200 Subject: [PATCH 2/3] document member fieldtype extension hooks --- docs/add-ons/pro-variables/type.md | 2 +- .../extension-hooks-overview.md | 1 + .../extension-hooks/global/member-ft.md | 60 +++++++++++++++++++ docs/fieldtypes/member.md | 4 +- docs/fieldtypes/relationships.md | 2 +- docs/toc_sections/_advanced_usage_toc.yml | 2 + 6 files changed, 66 insertions(+), 5 deletions(-) create mode 100644 docs/development/extension-hooks/global/member-ft.md diff --git a/docs/add-ons/pro-variables/type.md b/docs/add-ons/pro-variables/type.md index 1d1eea1ed..5b90c3af4 100644 --- a/docs/add-ons/pro-variables/type.md +++ b/docs/add-ons/pro-variables/type.md @@ -60,7 +60,7 @@ Allows applying modifiers, which, among other, are used to apply [on-the-fly ima ## Grid -Uses the native [Grid field](/fieldtypes/grid.md). All native types are available, _except for Relationships_. To output the variable, use the `{exp:pro_variables:pair}` or `{exp:pro_variables:single}` tag where appropriate. You can use any of Grid’s [parameters](/fieldtypes/grid.md#parameters) and [variables](/fieldtypes/grid.ms#variables) using these tags. Additionally, one more parameter is available: +Uses the native [Grid field](/fieldtypes/grid.md). All native types are available, _except for Relationships and Members_. To output the variable, use the `{exp:pro_variables:pair}` or `{exp:pro_variables:single}` tag where appropriate. You can use any of Grid’s [parameters](/fieldtypes/grid.md#parameters) and [variables](/fieldtypes/grid.ms#variables) using these tags. Additionally, one more parameter is available: ### Parameters diff --git a/docs/development/extension-hooks/extension-hooks-overview.md b/docs/development/extension-hooks/extension-hooks-overview.md index 7bac8c885..6327f7217 100644 --- a/docs/development/extension-hooks/extension-hooks-overview.md +++ b/docs/development/extension-hooks/extension-hooks-overview.md @@ -29,6 +29,7 @@ Core hooks are categorized into 5 categories: - [Output Library](development/extension-hooks/global/output.md) - [Pagination Library](development/extension-hooks/global/pagination.md) - [Relationships Fieldtype](development/extension-hooks/global/relationships.md) + - [Members Fieldtype](development/extension-hooks/global/member-ft.md) - [Session Library](development/extension-hooks/global/session.md) - [Template Library](development/extension-hooks/global/template.md) - [Text Helper](development/extension-hooks/global/text-helper.md) diff --git a/docs/development/extension-hooks/global/member-ft.md b/docs/development/extension-hooks/global/member-ft.md new file mode 100644 index 000000000..85422f098 --- /dev/null +++ b/docs/development/extension-hooks/global/member-ft.md @@ -0,0 +1,60 @@ +--- +lang: php +--- + + + +# Members Fieldtype Extension Hooks + +[TOC=3] + +### `member_relationships_display_field($entry_id, $field_id, $sql)` + +| Parameter | Type | Description | +| ---------- | -------- | ------------------------------------------------------- | +| \$entry_id | `Int` | Entry ID of entry being edited. | +| \$field_id | `Int` | Field ID of field currently being loaded. | +| \$sql | `String` | Compiled SQL about to be run to gather related members. | +| Returns | `Array` | Result Array of query result. | + +Allows developers to modify the existing query that retrieves related members for the publish field or to perform their own queries to return related members. + +How it's called: + + if (ee()->extensions->active_hook('member_relationships_display_field') === TRUE) + { + $related = ee()->extensions->call( + 'member_relationships_display_field', + $entry_id, + $this->field_id, + ee()->db->_compile_select() + ); + } + else + { + $related = ee()->db->get()->result_array(); + } + +NOTE: **Note:** To use this hook, you can either add to the existing Active Record call, or call `ee()->db->_reset_select()` to cancel the Active Record call and start your own, or modify the passed compiled SQL. + +### `member_relationships_post_save($ships, $entry_id, $field_id)` + +| Parameter | Type | Description | +| ---------- | ------- | ---------------------------------------------- | +| \$ships | `Array` | Array of member IDs to be related to the entry. | +| \$entry_id | `Int` | Entry ID of entry being saved. | +| \$field_id | `Int` | Field ID of field currently being saved. | +| Returns | `Array` | Array of relationships. | + +Allows developers to modify or add to the relationships array before saving. + +How it's called: + + $ships = ee()->extensions->call('member_relationships_post_save', $ships, $entry_id, $field_id); diff --git a/docs/fieldtypes/member.md b/docs/fieldtypes/member.md index 87d303710..6630fd0e1 100644 --- a/docs/fieldtypes/member.md +++ b/docs/fieldtypes/member.md @@ -13,9 +13,7 @@ Members Fieldtype allows selecting one or multiple members and associating those [TOC] -Relationships are an extremely powerful tool that allow you to connect Entries in one Channel to those in another one, or even to other entries in the same channel. This ability allows you to store very complex content in your Channel entries. - -This fieldtype is currently only limited to Channels. +Members fieldtype is the tool that allow you to connect Members to Channel Entries. This ability allows you to store very complex content in your Channel entries. For example, you could create a Channel called "Articles" and then create a Channel Field called "Authors" that is a Members fieldtype. You could then associate one or more Members with each Article entry. This would allow you to display the author's name, bio, photo, etc. on the Article page. ![members field](_images/field_members.png) diff --git a/docs/fieldtypes/relationships.md b/docs/fieldtypes/relationships.md index b677a35dc..73a9f0fb2 100755 --- a/docs/fieldtypes/relationships.md +++ b/docs/fieldtypes/relationships.md @@ -11,7 +11,7 @@ [TOC] -Relationships are an extremely powerful tool that allow you to connect Entries in one Channel to those in another one, or even to other entries in the same channel. This ability allows you to store very complex content in your Channel entries. +Relationships are an extremely powerful tool that allows you to connect Entries in one Channel to those in another one, or even to other entries in the same channel. This ability allows you to store very complex content in your Channel entries. This fieldtype is currently only limited to Channels. diff --git a/docs/toc_sections/_advanced_usage_toc.yml b/docs/toc_sections/_advanced_usage_toc.yml index a40751102..e01f0c981 100644 --- a/docs/toc_sections/_advanced_usage_toc.yml +++ b/docs/toc_sections/_advanced_usage_toc.yml @@ -203,6 +203,8 @@ href: development/extension-hooks/global/pagination.md - name: Relationships Fieldtype href: development/extension-hooks/global/relationships.md + - name: Members Fieldtype + href: development/extension-hooks/global/member-ft.md - name: Session Library href: development/extension-hooks/global/session.md - name: Template Library From e4dfcda93a247f6e32617986a41a4c765a7a2354 Mon Sep 17 00:00:00 2001 From: Bryan Nielsen Date: Thu, 8 Feb 2024 15:25:36 -0500 Subject: [PATCH 3/3] Update member.md --- docs/fieldtypes/member.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/fieldtypes/member.md b/docs/fieldtypes/member.md index 6630fd0e1..25c00f25b 100644 --- a/docs/fieldtypes/member.md +++ b/docs/fieldtypes/member.md @@ -9,11 +9,11 @@ # Members Fieldtype -Members Fieldtype allows selecting one or multiple members and associating those with a channel entry +The Members Fieldtype allows selecting one or multiple members and associating those with a channel entry [TOC] -Members fieldtype is the tool that allow you to connect Members to Channel Entries. This ability allows you to store very complex content in your Channel entries. For example, you could create a Channel called "Articles" and then create a Channel Field called "Authors" that is a Members fieldtype. You could then associate one or more Members with each Article entry. This would allow you to display the author's name, bio, photo, etc. on the Article page. +The Members fieldtype helps you connect Members to Channel Entries. This lets you create powerful relationships between Members and content in your Channel entries. For example, you could create a Channel called "Articles" and a Channel Field called "Authors" that uses the Members fieldtype. You could then associate one or more Members with each Article entry. This would allow you to display the author's name, bio, photo, etc. on the Article page. ![members field](_images/field_members.png) @@ -36,16 +36,16 @@ Default ordering of members in the field's dropdown. When set to yes, authors will be allowed to create multiple relationships in a single field. #### Minimum selection -The minimum number of relationships that can be added to the field. +The minimum number of members that can be added to the field. #### Maximum selection -The maximum number of relationships that can be added to the field. +The maximum number of members that can be added to the field. #### Display Member IDs? When enabled, member IDs will be displayed together with member screen name inside the field. #### Defer field initialization? -When enabled, this field won’t initialize until the Edit Relationships button is clicked on. This can result in faster control panel page load times. +When enabled, this field won’t initialize until the Edit Members button is clicked on. This can result in faster control panel page load times. ## Template Tag Pair @@ -142,30 +142,30 @@ In addition to using as template tag pair, the Members field can display its dat ### `:member_ids` Fetching Member IDs Only -Sometimes it's useful to get just a list of IDs of related members, to pass on to another tag as parameter or similar. If you need to do this, you can use the single variable `:member_ids` shortcut modifier: +Sometimes it's useful to get just a list of IDs of related members to pass on to another tag as a parameter. If you need to do this you can use the single variable `:member_ids` shortcut modifier: {members_field:member_ids} -Outputs in the format: +Which outputs the member IDs in the following format: 43|58|127 #### Parameters -The member field tag with `:member_ids` modifier has only one optional parameter, `delimiter` +The member field tag with the `:member_ids` modifier has an optional `delimiter` parameter. By default the member IDs will be pipe-delimited, but you can choose to have them delimited with something else: {members_field:member_ids delimiter=","} -Would output in the format: +Would output in the following format: 43,48,127 ### `:length` ### `:total_rows` -Both of these modifiers can be used to display the number of members that are related via certain field +Both of these modifiers can be used to display the number of members that are related via a certain field {members_field:length} // 2 {members_field:total_rows} // 2