Multi-client (skins)
Principe
Une seule base de code (StarterKit_base.sln + option StarterKit_shop.sln) sert une trentaine de clients. Un client = un skin. Le build prend un skin en parametre (--skin=<nom>, defaut vonroten) et assemble un site Umbraco complet pour ce client.
Ce qui est propre a chaque client
| Element | Emplacement |
|---|---|
| Base SQL | umbracoCMS_<skin> + utilisateur UmbracoUser_<skin> (SQL Server) |
| Config | prodconfig/<skin>/ : Web.config, Config/*.config (ClientDependency, log4net, nanoxiSettings, umbracoSettings, tinyMce), lic/ (licences), robots.*.txt, Documentation/ |
| Design | design/v2/<skin>/ : Gruntfile + Skins/Default (Less/Css/Webparts/Widgets/Fonts/Favicons) |
| Code propre (optionnel) | src/Nanoxi.Customization/<Skin>/ + StarterKit_<skin>.sln |
| Metadonnees | une ligne dans doc/StarterKitv2_InfosTechniques.xlsx |
Liste des clients
~36 solutions client dans src/Nanoxi.Customization/ (ex. vonroten, cavepully, pully, museepully, morand, cibois, felix, policeel, idealp, secoss, accm, rostal, medvsplan, edelweiss, chezzen, barras, aslae, elpol, finass, rivesrhone, mbd, qjet, ...). La liste effective des skins releases en batch est dans la cible Cake Release-Spk-All. Tous les clients n'ont pas forcement une solution de customization (certains se contentent de config + design).
Selection du skin au build
build.cakelit--skin(defautvonroten) et instanciecustomerConfigLib = new CustomerConfig("./doc/StarterKitv2_InfosTechniques.xlsx", skinName).customerConfigLib.IsShopEnabled()decide siBuild-Shopcompile l'e-commerce.customerConfigLib.GetConnectionStringBuilder()fournit la connexion DB du client.Build-CustomercompileStarterKit_<skin>.slnsi elle existe (sinon "No customer specific solution").Ensure-Production-Config(en release) copieprodconfig/<skin>/danswebsite/et nettoie les configs*.Debug.*.
Config par precedence
website/Web.config(base, issu du clone Umbraco).prodconfig/<skin>/Web.config+prodconfig/<skin>/Config/*.config(override client).*.Debug.<MachineName>.config(override machine, supprime en release).build.cakemappe plusieurs machines de dev/stage versWRK-STAGE.
Nanoxi.Builder
Outil GUI (toolsnanoxi/Nanoxi.Builder/) qui genere la config (Web.config, changelog, ...) d'un client a partir des metadonnees Excel. Compile par la cible Build-NanoxiBuilder. Sa librairie (Nanoxi.BuilderLibrary) est referencee directement par build.cake (CustomerConfig, util).
Customization - structure type d'un client
Sous src/Nanoxi.Customization/<Skin>/ on trouve selon les besoins : Mvc/ (Controllers, Views, ApplicationEvent, Util, Scripts), Data/, Widgets/, Module/, Backend/. Exemple : Pully/ a Mvc, Data, Module, Widgets, Backend. La logique metier client (ex. devis Swiss Cocktails de Morand) vit ici - voir ReadmeCustomer.md.

