Hey!
I'm currently working on developing a website for one of the Internet2 Initiatives, specifically the K20 Initiative. After much debate, we've decided to go with using Drupal as the platform for which to base our website upon. The K20 website will feature a "national" site, along with many subsites, or what we call "regions". For example, the national site could encompass the entire USA, while the regional sites could be various states around the US. We want each region to be free to create their own branding, styling, and look and feel. As such, we decided on using the multi-site feature in Drupal.
We currently have the multi-site functionality working, with users (and their information) shared across all sites, while content (nodes) are kept separate. We're now tackling on getting our project functionality implemented. We want projects to remain separate, yet connected to each regional and the national site (in our implementation design, the national site is merely another region). For example, say we had a project X, we could create that project under the region WA state, or project Y under the CA state region.
We initially went with creating a k20project module, extending the node interface to create a k20project node type, using an additional table to store extra information that is a part of a k20project node. This allowed us to visit the national site, and create projects under the national site, or to visit the WA region and create projects under this region.
However, this is where we ran into a brick wall - we want to have the ability for a user to create a project and assign it to multiple regions. Currently, it's creating a node within the regional site you are currently on (which is correct, since the node tables are separated amongst the sites). We also want our project creation page to be independent of which particular site you are in, amongst all the multi-sites. For example, if you were on the WA region, you could create a project, and in that project creation form, select from a list at least one region to assign the project to. This project would then appear on all regions you selected. The national site would display all national projects, the WA site would display all WA projects, etc etc..
We briefly thought of posting a node entry to each region the user selected, but this would create a headache of problems in terms of redundant data, editing/updating project data, etc...
We dabbled with the idea of not using node types to create the k20project content, handling all the db queries ourself, so that we could have one common table that shared all the project data. This, however, prevents us from using a lot of the built in features provided with nodes, for example moderation, workflows/actions module.. etc. However, if this is the way to go, we will have to build our own moderation ourselves...
How would we maintain regional customisation (theming) across sites, while creating a particular node type that can have its content shared across sites? Effectively, we want one table that holds all the k20project node data, but can be read and edited as a node by all sites (well, all regions/sites that the project is a part of..). Users can create a k20project node in any site, and assign it accordingly to a particular region/site.
Is there something I'm missing? What would be the best way to go about building this module? Should we go the route of a node type, and if so, how do we solve this multi-site posting/reading issue?
thanks heaps in advance,
tim
ps: i know this post is long, but i'm trying to explain it well so that there's no ambiguity, because i know it's confusing! but most likely i've left something out, so lemme know if you need any clarifications.. thanks! :)