it is very simple to implement the functionality you are looking for. Namely, you have the data layer and business layer already done, if you are using Contacts module. So all you have to do is following:
1. Create a new control - you can name it let's say "PublicContactEditor". If you wish to use embedded templates you can inherit from SimpleControl class as explained here
2. In the template you will create the form with all the needed controls and implement the logic that works with ContactsManager
- Actually, you can use the ContactEditor control for this which is already there, perhaps some minor tweaks will be needed, but probably 95% of the function will work.
3. Create the new ToolboxItem for this control (Toolbox item is a class which carries information about public controls. You can take a look at the SingleContactToolboxItem class to see how to implement it).
4. Finally, register this new control as a public control. To do so, open the ContactsModule and locate the
IList<IToolboxItem> Controls property. Add the instance of ToolboxItem class you've created in the step 3 to the list.
Now, you will have a public control which you can drag on the pages that can insert or edit contacts, so the visitors of your site will be able to work with contacts as well (not just the site administrators).
I hope you'll find this information helpful. Let us know if there is anything else we can do for you.
All the best,
the Telerik team