jaredcobb / ccb-core

Church Community Builder Core API - A WordPress plugin to sync your church data
http://www.wpccb.com
GNU General Public License v2.0
8 stars 5 forks source link

Registration Forms #25

Open bradjconner opened 5 years ago

bradjconner commented 5 years ago

Hi Jared,

First off, I can't thank you enough for developing this tool as we have found it invaluable for displaying groups on our website. We use Toolset to arrange the custom-fields & taxonomies into a searchable catalog.

One question I have is about the <registration_forms> key that gets pulled in for each group under the group_profiles API service. It is placed into post-meta for each group as a serialized array, but the incoming XML node structure goes like this:

-<groups>
--<group>
---<registration_forms>
----<form>
-----<name>
-----<description>
-----<URL>

What would be the best route for isolating & making available that URL field? Unfortunately, I'm not a full-time developer & only know enough to be dangerous, but I am motivated.

As it stands now, I can display all the values for the key registration_forms, but I need to isolate to just that one value with the url. Can you direct me on adding a hook to filter this? Or suggest the best route?

Thank You! Brad

(I've attached a few screenshots of the XML Node structure in group_profiles service api, what it looks like as a serialized array in post-meta, and what it looks like as a custom-field when inspecting a group)

1 - XML Node structure in group_profiles service api

2 - Serialized array

3 - custom-field

emailjough commented 5 years ago

Hi Brad, I am not qualified to answer your question (I'll leave that to Jared) but I am interested in your post, as I too use wpccb with Toolset to display a searchable catalog of CCB groups on my church's site. Unlike my church I see you use a separate CCB form for each group (we use just 1 form with a list of group names to select). I am curious how you associate the form to the group since, as far as I know the only way to do this in CCB is to add the form URL to the group description. Are you creating the forms in CCB and then adding their urls to your wordpress site as a Toolset custom field associated with the wpccb post type? I wouldn't think so because then you wouldnt be accessing the form url via json. Your question here has me puzzled and curious.

bradjconner commented 5 years ago

Hey Jough,

Each of our forms for signing up to a group have an automation which adds the respondent to that group. It appears when you set a form this way, CCB adds that form's URL to the metadata of the group. From there, the group_profiles service pulls it in.

I haven't tested what happens if two forms have an automation which add to that 1 group though...

BTW: For context, the previous node structure had this url at the same "level" as the other main keys like name, group_type, etc. So it was easy to display that URL. But now it is nested deeper with other information about the form, hence the need to isolate it... I would prefer to do this on the incoming / backend rather than some kind of conditional Toolset filter at the time of display to the user...

Screen Shot 2019-06-28 at 5 37 18 PM

emailjough commented 5 years ago

@bradjconner Interesting. I wasn't aware the CCB automation adds the form url to the group metadata, or that Jared's plugin could grab this url. It would be great if this url field got exposed to Toolset like other fields such as group_capacity and group_type already are.

I am guessing you're already aware that rather than creating 1 form for each group, you can create 1 form for all groups, and still add the respondant to the group they've selected via automating at the level of the question within the form instead of the entire form? We found it too much of a hassle to create/manage separate forms for each group, so now we have 1 form, which makes adding it to our toolset custom group finder simple - just 1 url regardless of which group is filtered on. Heres the end result if youre interested. Each time a new form is created (say, for a new season of groups) I only have to update 1 url in my Toolset View.

bradjconner commented 5 years ago

Hi jough,

The API also makes the User Defined Labels available, but they are nested deeper as well.

We considered the single-form approach, but ended up choosing the more labor-intensive multi-form approach to make it easier for our users.. We generally float between 40 and 80 short-term or care-based groups and didn't want them to have to sort through a huge list. Hopefully someday CCB will improve their forms engine with filtering or tabs to make things like this easier for people. But until then, that is the route we've chosen.

Here is our implementation based on a modified CCB Core API Plugin v0.9.6 - I wish it was as gorgeous as yours, but has gotten the job done for us. I am working on a fresh one with the updated plugin (and toolset), but this nesting issue is my current roadblock there.

Thanks! Brad

iamandrewpeters commented 5 years ago

Do either of you guys have a codebase we could take a look at to see how you're doing your group listings? I was using CCB Press for groups but it's just too limiting.

Hoping to use Beaver Builder + Beaver Themer to display groups CPT and have a 'Join' button similar to @emailjough.

Currently adding the API breaks in this version of WP so I'm at a bit of a standstill till that gets fixed, but I would really love to see how you guys are doing this. Designer here that know just enough to break stuff. :)

emailjough commented 5 years ago

@iamandrewpeters I am using Jared's plugin to 1) create a Groups post type and its related fields, and 2) sync with CCB to pull groups data dynamically into wordpress.

Then I am using the Toolset Views plugin to display this data on the front end. Views allows me to create the group search form, to style the results of the search form, and have the results open in a bootstrap modal that contains additional dynamic content from the Groups post type including links back to CCB registration forms. Basically Views handles the php and javascript and I add the html and css. This means my Small Groups Pastor can update CCB at will and changes get auto published to the front end group finder.

It's been a solid solution as long as Jared's plugin continues to work.

iamandrewpeters commented 5 years ago

Awesome. Beaver Themer does the same. Just not as powerful as toolset. Can you tell me what field your using for the signup link? I haven’t Been able to figure that one out.

Andrew Peters

I apologize for the brevity of this email. It's sent from my iPhone

On Aug 6, 2019, at 3:39 PM, jough74 notifications@github.com wrote:

@iamandrewpeters I am using Jared's plugin to 1) create a Groups post type and its related fields, and 2) sync with CCB to pull groups data dynamically into wordpress.

Then I am using the Toolset Views plugin to display this data on the front end. Views allows me to create the group search form, to style the results of the search form, and have the results open in a bootstrap modal that contains additional dynamic content from the Groups post type including links back to CCB registration forms. Basically Views handles the php and javascript and I add the html and css. This means my Small Groups Pastor can update CCB at will and changes get auto published to the front end group finder.

It's been a solid solution as long as Jared's plugin continues to work.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

emailjough commented 5 years ago

Well, that's sort of what this thread is about. Brad's original question was about how to isolate the CCB form link for each group. My solution is to use 1 form for all groups instead of 1 form per group. So in my case the link either doesnt change or only changes a few times a year when we are launching new groups. I think we're still waiting for Jared to respond to Brad's original question. It seems like it should be doable if the URL is part of the json data. If I had the path to the slug of of the CPT I would like to try figuring it out.