[buddypress-trac] [BuddyPress Trac] #6347: XProfile fields used for signup should be configurable
buddypress-trac
noreply at wordpress.org
Wed Mar 31 18:36:04 UTC 2021
#6347: XProfile fields used for signup should be configurable
------------------------------+------------------------------
Reporter: johnjamesjacoby | Owner: johnjamesjacoby
Type: enhancement | Status: reopened
Priority: high | Milestone: 8.0.0
Component: Extended Profile | Version: 1.0
Severity: normal | Resolution:
Keywords: has-patch |
------------------------------+------------------------------
Changes (by imath):
* keywords: needs-patch => has-patch
Comment:
Hi,
I've been working on an alternative way of achieving this. Instead of
improving the `BP_XProfile_Field` object adding methods to
fetch/cache/query/delete/add etc.. I suggest to use what we have so far
inside the `BP_XProfile_Group` object.
To build
[https://buddypress.trac.wordpress.org/attachment/ticket/6347/6347.alt.patch
this alternative patch] I've kept in mind @offereins comment below because
I agree it's a very important point.
> The patch contains the signup-position metabox, but there's no screen
where the user could get an overview of all selected fields and manually
rearrange them. I think that is a required addition. Can I help with that
or should we wait untill all the query/caching-stuff is in?
In the patch I'm editing the xProfile WP Admin Screen to simulate a new
Group for the signup fields. This "fake" group is used to enjoy the UI we
have to sort and move fields from one Group to another one.
This group doesn't exist into the db table and nothing is changed about
the profile fields we drag on it. They are not moving from the field group
they are attached to. It's I believe a nice way to pick the fields of the
various groups we want to display into the signup form.
I've edited the JavaScript UI so that it simply clones the dragged field
into the "Signup Fields" tab. Once cloned into this tab you can reorder
the signup fields.
To **only** fetch the signup fields using the `bp_has_profile()` loop,
I've added a new parameter `signup_fields_only` to inform
`BP_XProfile_Group::get()` it needs to ignore all other fields. So fields
are fetched using the order of their belonging group at first. Then into
`BP_XProfile_Data_Template` just after we got Groups and fields, I'm using
a query to build an array of signup field IDs ordered according to their
`signup_position` metadata, I'm then faking a new group looping into the
fetched ones to reorder the fields according to this array.
And it works, check [https://vimeo.com/531370819 this demo] :)
Other things the patch is handling:
- The array of ordered signup field IDs is cached
- Installation sets the fullname field by default as the first and
required signup field.
- A migrate task does the same during 8.0.0 upgrade.
- Template packs has both been updated.
Things I still need to work on:
- I still need to improve it to select all Base group fields if signup are
enabled.
- I still need to add a filter if the user has overriden the register
template to improve backcompat.
- I still need to improve the JavaScript UI because when you drag a field
into the Signup fields tab, as it's not removing the dragged field from
the original Groups tab, the group fields can be sorted differently
(moving the dragged field at the top).
- I still need to add a metabox into the field's edit screen to enjoy the
things @johnjamesjacoby previously added for the `signup_position` metabox
to remove a field from the signup form from this screen.
About this last point I have 2 options:
- use a toggle to swith between sorting/moving fields
- use up/down arrow buttons in field containers like the WordPress
Dashboard metaboxes now includes.
What do you think of this alternative?
--
Ticket URL: <https://buddypress.trac.wordpress.org/ticket/6347#comment:32>
BuddyPress Trac <http://buddypress.org/>
BuddyPress Trac
More information about the buddypress-trac
mailing list