Skip to content

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

ElementEmplacement
Base SQLumbracoCMS_<skin> + utilisateur UmbracoUser_<skin> (SQL Server)
Configprodconfig/<skin>/ : Web.config, Config/*.config (ClientDependency, log4net, nanoxiSettings, umbracoSettings, tinyMce), lic/ (licences), robots.*.txt, Documentation/
Designdesign/v2/<skin>/ : Gruntfile + Skins/Default (Less/Css/Webparts/Widgets/Fonts/Favicons)
Code propre (optionnel)src/Nanoxi.Customization/<Skin>/ + StarterKit_<skin>.sln
Metadonneesune 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.cake lit --skin (defaut vonroten) et instancie customerConfigLib = new CustomerConfig("./doc/StarterKitv2_InfosTechniques.xlsx", skinName).
  • customerConfigLib.IsShopEnabled() decide si Build-Shop compile l'e-commerce.
  • customerConfigLib.GetConnectionStringBuilder() fournit la connexion DB du client.
  • Build-Customer compile StarterKit_<skin>.sln si elle existe (sinon "No customer specific solution").
  • Ensure-Production-Config (en release) copie prodconfig/<skin>/ dans website/ et nettoie les configs *.Debug.*.

Config par precedence

  1. website/Web.config (base, issu du clone Umbraco).
  2. prodconfig/<skin>/Web.config + prodconfig/<skin>/Config/*.config (override client).
  3. *.Debug.<MachineName>.config (override machine, supprime en release). build.cake mappe plusieurs machines de dev/stage vers WRK-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.

Contributors

No contributors

Changelog

No recent changes