Patterns - comment ajouter / modifier
Ajouter / modifier un widget
Les widgets vivent dans Nanoxi.Content.Widgets, organises par categorie (Ad, Geo, Management, Multimedia, Social). Voir l'inventaire et l'anatomie dans ../modules/widgets.md.
- Creer la classe
Widget<Nom>.csdans la categorie adequate, heriter deBaseWidget(ou implementerIWidget/II18nWidget). - Brancher le rendu cote vue : macro Umbraco (partial view MVC ou UserControl WebForms) selon le widget.
- Si le widget porte du style, ajouter le LESS correspondant dans
design/v2/<skin>/Skins/Default/Widgets/(ouWebparts/) et recompiler avec Grunt. - Cote contenu/backoffice, le document type et la config eventuelle sont injectes par les scripts SQL
data/et/ou l'API d'install (voir plus bas).
Ajouter un module framework (Nanoxi.App.* ou Nanoxi.Content.*)
- Creer le projet
.csproj(net48) et l'ajouter aStarterKit_base.sln. - Respecter le nommage :
Nanoxi.App.*(framework) ouNanoxi.Content.*(contenu). - Versionner via
src/SharedAssemblyInfo.cs(partage par tous les assemblies). postBuildAction.ps1copie les DLLs compilees verswebsite/bin: verifier que le nouveau projet y est pris en compte.
Ajouter un controller / une action MVC
- Coeur :
src/Nanoxi.App.Mvc/Controllers/(SurfaceControllers Umbraco pour les POST de formulaire, RenderMvcControllers pour le rendu). - API REST :
src/Nanoxi.App.Api/Controllers/(Web API, ex.ArticleController,EventController,PdfController). - Vues :
Nanoxi.App.Mvc/Views_v2/(etViews_v1/pour le legacy).
Ajouter un nouveau client (skin)
Procedure resumee (detail dans ../domain/workflows.md et ../modules/multi-tenant-skins.md) :
- Creer la base SQL
umbracoCMS_<skin>+ l'utilisateurUmbracoUser_<skin>(script dansReadme.md). - Ajouter le client aux metadonnees
doc/StarterKitv2_InfosTechniques.xlsx(active/desactive le shop, etc.). - Generer la config via l'outil
Nanoxi.Builder, deposer le resultat dansprodconfig/<skin>/. - Creer le design
design/v2/<skin>/(souvent en copiant un skin existant) avec son Gruntfile. - Si besoin de code propre : creer
src/Nanoxi.Customization/<Skin>/+StarterKit_<skin>.sln. - Injecter la structure de base : passer les scripts
data/01.Scratch, puis appeler l'API/Umbraco/Api/StarterKit/Install.
API d'installation / mise a jour du StarterKit
L'installation et la migration de la structure de contenu passent par l'API Web :
StarterKitController+StarterKitController_Create/_Method: creation des elements de base (/Umbraco/Api/StarterKit/Install).StarterKitController_Upgrade: migrations versionnees (/Umbraco/Api/StarterKit/Upgrade). A chaque nouvelle release, ajouter une etape d'upgrade ici (cf.Readme.md).- Pour des elements propres a un client, prevoir une classe
Nanoxi.App.Api.Install.Install<ClientName>.
Scripts SQL (structure & donnees)
L'ordre des dossiers data/ est significatif : 00.CleanDB -> 01.Scratch (structure de base) -> 02.Customer -> 03.Patch -> 04.PostInstall -> 06.Shop -> 07.Translation -> 08.Sql. Voir ../modules/content-model.md.
Code client (customization)
Un client peut comporter ces sous-projets sous src/Nanoxi.Customization/<Skin>/ : Mvc (controllers, vues, ApplicationEvent, util), Data, Widgets, Module, Backend. Ils sont references par StarterKit_<skin>.sln et compiles par Build-Customer. Exemple metier complet : le devis Swiss Cocktails (Morand), documente dans ReadmeCustomer.md.

