I would like to customise the edit user page in CMS admin mode and wondered if anyone knows how to do this without editing the core CMS files in program files.
I would like to remove the password and confirm password fields. Using reflector I can see there is a method called InitializeMembershipForm which looks ideal I'm just not sure how I can hook in a class that can inherit from the UserMembership class so that I can override this method.
Thanks in advance,
Good that you found the class responsible for the view, and wise that you decided not to edit the files in Program Files :)
You can use the virtual path mapping provider to map the url of the aspx/ascx to a copy that you place inside your project. You can then let this copy inherit from a custom class which in turn inherits from the "original" codebehind class. Then override whatever you need to remove the controls (you can of course edit the aspx/ascx you copied too).
A different approach that might be feasible and in some ways is less intrusive and in some ways more "hacky" is to create a plugin for the PlugInArea.SidSettingsArea. That would normally add a new tab to the view, but perhaps there is a way to work from that tab to find controls in the other tabs and hide them. See this blog post http://labs.episerver.com/en/Blogs/Allan/Dates/2009/1/Neat-Trick-Modifying-Edit-Mode-Tabs/. I haven't used this for anything else than the Edit panel as described in the article, but theoretically it might work in a similar way.
A control adapter might also be a way, see http://labs.episerver.com/en/Blogs/Anders-Hattestad/Dates/2009/5/Hiding-tabs-based-on-roles/
I you would like to customise the UI but not do it in program files then I have previously blogged about it here:
It uses the virtual path mapping provider as Magnus described above
I tried the approach based on David's blog but couldn't get it to work, it still picked up the program files control. I created a control in my project as a copy of the user control in program files, added my custom code (as it was a straight copy it has all the correct inheritance) and added the virtual path mapping in episerver.config