I'd like to give future site "administrators" the ability to create collaboration subsites (based very loosely on the team site definition) beneath a parent site simply by adding an item to a list.
Consider the following parent site's list/doclib:
Title (single line of text) | DatabaseID (number) | Logo (File)
Upon adding an item to this list, a subsite should be created based on the definition -- each subsite will be largely the same, with a few exceptions/concerns:
a) The list structure is the same across sites, but the contents of the lists will be populated after the site has been created, based on the DatabaseID entered into the parent list. I believe I have a decent handle on how to accomplish this via Server Object Model and the repository pattern.
b) The site logo (instead of the team site photo of "people collaborating") should be the one that is uploaded to the parent site's list. I don't know how to accomplish this.
c) The subsite lists will contain lookup columns to managed metadata (or site columns) from the parent site. (will this just work?)
Is all of this possible? Does the approach make sense? What SharePoint customization techniques should I be looking at to accomplish this? So far I am considering the following:
- Create the parent list and deploy an Event Receiver that will handle the ItemAdding event.
- Create the subsite in that event, based on a Site Definition (or Web Template?) What is the best way to create such a site definition? Build a generic subsite first using Designer/web UI tools, then "save it" and tweak it with Visual Studio? Build it entirely using Visual Studio?
How can I improve/augment this plan to accomplish my goal and alleviate the above concerns? Thank you in advance for any insight you can provide on this topic.