We've been skinning MonoX lately to use at ClipFlair's (http://clipflair.net
) upcoming web platform and have made the following notes:
1) I'd like to see a folder App_MasterPages with subfolder App_MasterPages\Default with all default master pages COPIED there instead of having them at MonoX/MasterPages. Then one could have App_MasterPages\MyTheme with their own version of the default master pages (with same file names). When switching a theme it could copy the theme's master pages from there into MonoX/MasterPages. If one selected to restore the defaults it would copy from App_MasterPages/Default into MonoX/MasterPages again and override any files with same name.
any pages specifically requesting a master page with other filename could refer it from MonoX/MasterPages (expecting that the theme they belong too have been installed [copying into MonoX/MasterPages that is from App_MasterPages/MyTheme]) or refer it directly from App_MasterPages/MyTheme. Doing the 1st means they can make multiple themes of their own custom site that may have more master pages than the ones at the default MonoX build
Then when selecting from admin UI to install a theme, Theme setting would be overriden via web.config globally (not sure if MonoX can do it from admin UI now automatically instead of having to set theme to one-by-one the pages), App_Themes/MyTheme and App_Templates/MyTheme would be used automatically and via the copying mechanism (or could you use some rewrite rules under the hood?) App_MasterPages/MyTheme would also override the default masterpages and enable any new ones too to be referenced as MonoX/MasterPages/... by the pages/controls
Any custom controls a theme needs could be placed in /MyTheme/Controls/... and refered to as /MyTheme/Controls/... by the pages, or maybe use similar mechanism like above and have them at App_Controls/MyTheme/, where selecting a theme would copy them at MonoX/Controls/ copying over any with same names (in that case you'd have App_Controls/Default/ with copies of the default versions of the controls too to be able to switch back to them)
In general I'd like to be able to have a .zip with Controls/ , Theme/ , Templates/ and MasterPages/ subfolders in it and when installing (from admin UI) the zip of the "Theme" (or may need better general word to cover all the above terms since ASP.net uses skin too for something more narrow) it should copy to App_Controls/MyTheme, App_Themes/MyTheme, App_Templates/MyTheme, App_MasterPages/MyTheme appropriately. Selecting to apply then (at some different time) that installed theme would copy the respective files from those folders into appropriates /MonoX/ subfolders as described above (or could setup rewriting rules to there - although I'm not sure it is possible at all to set such rules for paths to controls and master pages etc. that are internal to ASP.net site)
2) MonoX/controls should be renamed to MonoX/Controls for consistency (and also upcase "C" at any references to it in case at some time you also want to run on mono [.net on Unix] which usually runs on case-sensitive servers)
3) why is Blog.aspx flat in the file structure instead of being at MonoX/Pages like the other pages? For Default.aspx and Login.aspx I feel its normal that they are at the top-level. For simpler paths one could use URL rewriting rules I guess
4) at Default.aspx I think there's hard-coded content that could be wrapped in an editor control's "DefaultContent" as done at other pages where one can edit the content visually from MonoX.
5) at Features.aspx and AdditionalResources.aspx you could break @Page in multiple rows for consistency with the rest of the pages (and easier reading/comparison between different versions)
6) minor: GroupPeopleSearch.ascx has an extra space after
7) I think you misuse dl/dd tags of HTML. Please read http://html5doctor.com/the-dl-element
e.g. at BlogComments.ascx
Probably you should use "ul" or something by also modifying your CSS to show as wished
Unless you do use dl//dd to have it not show a list UI at all and still keep the items grouped logically for your code to pick (in HTML5 there might be better tags for that, but not sure about older HTML)