I've been struggling to setup Toolset for my employer, where we wish to use it for our manufacturing Intranet. I'm first going to explain what we're trying to do, and then what has been done and where the issues are encountered. Note that I'm going to be using non-Toolset terminology unless I specify otherwise.
---------------
Each product has various kinds of components, and different departments handle these. These components see re-use across several products, and we need to be able to update the reference material once to affect all products using it. A basic example, where each instance of part A is identical, each instance of part B is identical etc, would be:
Product 1 uses components A, B, F, G, H.
Product 2 uses components A, C, F, G.
Product 3 uses components D, F, I.
There are different types of components for each department (Lab deals with boards, Machine Shop deals with parts, Wood Shop deals with cabinets, etc). This complicates the previous example and changes it to:
Product 1 uses boards A and B, Parts F, G, H.
Product 2 uses boards A and C, Parts F, G.
Product 3 uses board D, Part F, Cabinet I.
Each type of component has different kinds and quantities of stored entries, so it's not enough to use a common component template and specify the type within an entry. These entries are mostly links to files, but there's also textual, numerical, and date entries. Some entries would need to be able to store multiple values. File links need to support file uploading in the add/edit form.
Here's some mockups for component data entry:
- Adding a component of the type board hidden link
- Adding a component of the type hidden link
I would consider the above to be the backbone for data storage.
Moving on to the individual products, we need the same data to be usable in four different layouts, without any duplicate data entry or storage.
These "layouts" are:
- Full product overview hidden link
- Department-specific product overview hidden link
- Product browser hidden link
- Department-specific product browser hidden link
In regards to data entry, here's some mockups which I hope convey the intent:
- Adding a product hidden link
In "Full product overview": everything above the word "LAB" would be data stored in the product entry. Everything after the word "LAB" but before the words "MACHINE SHOP" would be loaded from the components of the type board. The Product entry would specify which components of this type it uses (i.e. Product 1 uses component:board A,B), and then populate the list based on that. Everything after the words "MACHINE SHOP" would be loaded from the components of the type parts. The Product entry would specify which components of this type it uses (i.e. Product 1 uses component:part F,G,H), and then populate the list based on that.
In "Department-specific product overview": This would work much the same as the "Full product overview", but it would only load components for the specific department. The information at the top of the page would also be loaded from a mix of the department's specific entries & the general entries for that product.
In "Product browser": This would produce a list of products and all of the referenced component entries.
In "Department-specific product browser": Same as "Product browser", except only listing referenced components of a specified type.
In "Adding a product": At this stage, we require an addition to the reference of components: Some types of components (parts, in this instance) need to have a numbered order within the product. i.e. Product 1 uses component:part G,H,F as a custom order, instead of ascending (H,G,F) or descending (F,G,H) orders. Note that this custom order is per component-type. An order of 1 should not make part G come before board A.
---------------
Now onto what's been done so far, and the difficulties faced.
The following has been implemented, using the Layouts, Types, and Views plugins:
- products (as post type)
- boards (as post type)
- parts (as post type)
I have since added Access and CRED plugins.
The problem I am having is in referencing the boards and parts a product uses, and limitations on repeating form fields. Unfortunately I am unable to share the actual WordPress site since it's hosted for internal use only.