Joe, thanks for the great job on the profile feature! It's really great.
Still, there are some my thoughts on how to improve it.
1. Need to add default values for all the profile property options to documentation (and implement it if it is not done already). As a result I do not need to write, for example, 'lazyLoad="false"' for each profile property. It would be nice to place this documentation to the beginning of mojoProfile.config.
2. Some web interface to manage the properties list would be great, but not so nesessary.
3. Need property option like 'VisibleOnWeb="false"' to prevent the property from showing to anyone, even web site administrators. Such properties can be accessed only from the code and store some technical information attached to the user).
4. If I add my custom properties, all the strings are in the same resource file. So, when I translate both mojoPortal and my custom properties to russian, it would be difficult for me to share the translation. Optional custom profile property for resource file name or just text will be the solution.
5. If I add my custom properties or remove some standard ones I have a conflict with SVN file.
Possible solution is the following:
- move this section back to web.config
- add a property like <mojoProfile OptionalFileOfUserSpecificProperties="mojoProfileUser.Config">
- implement <add>, <clear /> and <remove> tags for this file
- ignore the option if this file does not exist
- add a template for this file to SVN (as you did for user.config).
6. Rules like "if the property name contains 'url' it is rendered as a link" do not seem to be a good style for me. May be, add type definitions something like that (it shall not work just as written below, but I just want to show the idea):
<mojoProfile>
<types>
<add name="text"
type="System.String"
editControl="System.Web.UI.WebControls.TextBox"
editControlValueProperty="Text"
viewControl="System.Web.UI.WebControls.Label"
viewControlValueProperty="Text"
viewControlAdditionalOptions=""
...
>
<add name="yesno"
type="System.Boolean"
editControl="System.Web.UI.WebControls.CheckBox"
editControlValueProperty="Checked"
viewControl="System.Web.UI.WebControls.CheckBox"
viewControlValueProperty="Checked"
viewControlAdditionalOptions="Enabled=false"
...
>
...
</types>
<properties>
<add name="MSN"
type="text"
...
>
...
</properties>
</mojoProfile>
Or just hardcode several types for text, number, positive_number, date, link, yesno, etc.