Ah les vacances ... qu'est-ce que c'est bon. Les messages restent irrésolus pendant plusieurs jours ... le soleil. Tout va bien.
Bonjour Elodie
Une aide est associée à chaque contrôle de ton module. Celle-ci puise effectivement son contenu depuis la clef ModuleHelp du RESX associé au contrôle dans un premier temps, mais pas uniquement. Pour chaque contrôle contenu dans la définition du module tu peux spécifier une URL directe vers une aide plus complète. Cela peut-être une bonne solution, puisque d'une part tu as des fichiers HTML tout prêts, et que cela te permet de contrôler plus facilement l'emplacement de tes images. Néanmoins, il peut être utile de placer des images dans l'aide rapide ModuleHelp.Text.
Il n'y a pas de système de Tokens pour les chemins comme <%=SkinPath %> utilisable dans les fichiers ASCX des skins. Néanmoins ceci constitue une bonne suggestion à faire au Core Team Localization, et à défaut, une bonne raison de faire un développement perso (Un DLL à remplacer et hop).
Je découvre le problème avec ta question, et voici, dans l'ordre, les solutions que j'ai trouvé :
Dissoudre les paramètres de l'url :
ModuleHelp.Text : <img border="0" src="../../../../../../../../../images/403-3.gif">
URL de l'aide : localhost/dotnetnuke_2/CFEditor/tabid/56/ctl/Help/ctlid/204/moduleid/379/Default.aspx
FriendlyURL : activé
Il faut remonter 9 paramètres pour que l'url de l'image soit correcte, mais ce nombre de paramètres peut-être variable, donc cette solution n'est pas viable : toutes les pages ne sont pas de niveau Root.
Placer les images sur un serveur d'image tiers dont l'url ne bougera pas :
ModuleHelp.Text : <img border="0" src="http://img2.aricie.com/Portals/XS23/images/403-3.gif">
URL de l'aide : localhost/dotnetnuke_2/CFEditor/tabid/56/ctl/Help/ctlid/204/moduleid/379/Default.aspx
FriendlyURL : peu importe
Cette solution implique d'avoir un serveur d'image, et d'en connaître l'url. Ce n'est donc pas très pratique. De plus le serveur supportera la charge de l'aide de tous les exemplaires du module une fois distribué. Une solution d'hébergement mutualisé d'images est aussi envisageable, comme imageshack.com par exemple. Une fois uploadé, on n'en parle plus.
Désactiver le mode FriendlyURL :
ModuleHelp.Text : <img border="0" src="images/403-3.gif">
URL de l'aide : localhost/DotNetNuke_2/Default.aspx?tabid=56&ctl=Help&ctlid=204&moduleid=379
FriendlyURL : désactivé
Cette solution implique la désactivation de FriendlyURL... sans commentaire.
Créer son propre contrôle d'aide :
ModuleHelp.Text : <img border="0" src="images/403-3.gif">
URL de l'aide : localhost/DotNetNuke_2/Default.aspx?tabid=56&ctl=Help&ctlid=204&moduleid=379
FriendlyURL : désactivé
Ajouter un contrôle ASCX contenant un asp:litteral dont le texte sera chargé depuis une clef RESX tierce puis filtré via un système de token personnalisé.
Exemple :
Dim toReturn as String = localization.GetString("AideEnImage", me.LocalResourceFile)
toReturn.Replace("[PortalPath]", Request.MapPath(PortalHomeDirectory))
ltAide.Text = toReturn
Et d'ajouter un lien vers ce contrôle d'aide via la méthode ModuleActions :
Actions.Add(GetNextActionID, Localization.GetString(Entities.Modules.Actions.ModuleActionType.ModuleHelp, LocalResourceFile), Entities.Modules.Actions.ModuleActionType.ModuleHelp, "", "", EditUrl("Settings"), False, SecurityAccessLevel.View, True, False)
C'est vrai que ceci ajoutera deux bouttons d'aide dans le menu, mais je pense que les utilisateurs utiliseront celui qui se présentera en premier. J'ai tenté de retirer le bouton d'aide présent par défaut mais je n'ai pas réussi sans modifier les DLL Core. Cela se passe dans PortalModuleBase.vb ligne 496. Tant qu'à modifier une DLL Core, autant ajouter son propre système de tokens utilisables dans les resx et utiliser le contrôle d'aide déjà présent plutôt que de recréer un autre contrôle ...
Il n'y a donc pas de solution miracle, je te conseille par contre la solution du serveur d'image mutualisé. Pas de bande passante à gérer, en revanche on n'a pas de contrôle sur les images une fois distribuées (elles sont accessibles par tous pour une durée illimitée, et ne sera supprimée que si elles ne sont pas vues pendant 1 mois entier).
Mais peut-être que quelqu'un a une autre solution. (?)
seb