Utilisation des propriétés de configuration
Créez un objet JavaScript pour votre thème côté client. Les propriétés des métadonnées des thèmes doivent être chargées de manière dynamique. Si vous devez charger une propriété de manière statique, utilisez plutôt une propriété personnalisée d'un fournisseur d'environnement de ressources.
Pourquoi et quand exécuter cette tâche
Les propriétés de configuration peuvent être chargées de manière statique, type="config_static", ou dynamique, type="config_dynamic". Vous pouvez utiliser l'un ou l'autre, ou même les deux selon vos besoins. Le chargement statique est destiné aux valeurs de propriétés qui ordinairement ne changent pas une fois qu'elles ont été chargées initialement et cela optimise les performances car les valeurs sont mises en cache. Le chargement dynamique est destiné aux valeurs de propriétés qui changent de façon plus régulière.
Toutes les propriétés de configuration que votre module doit référencer côté client sont fusionnées dans un objet de configuration global unique et pratique. Elles sont fusionnées qu'il s'agisse de propriétés de métadonnées de thème ou de propriétés personnalisées du fournisseur d'environnement de ressources. Puis vous pouvez facilement référencer n'importe quelle propriété au sein de l'objet yourcoCfg.themesConfig, telle que yourcoCfg.themesConfig.yourTheme_yourRepProperty.
Le thème et les modules qui sont fournis avec HCL Portal fusionnent leurs propriétés de configuration dans la variable globale ibmCfg. Vous pouvez exécuter cette variable dans une console de navigation et examiner quels sont les noms et valeurs des propriétés. Les modifications apportées aux valeurs dans le fournisseur d'environnement de ressources WP GlobalThemeConfig sont appliquées de manière globale à tous les thèmes. Vous pouvez écraser certaines valeurs côté client si les valeurs doivent être différentes uniquement dans vos thèmes incluant votre module. Pour ce faire, utilisez une syntaxe comme dans l'exemple suivant dans un des fichiers config*.jsp de votre module :
i$.merge({<%--
--%>ibmCfg: {<%--
--%>themeConfig: {<%--
--%>loadingImage: "css/images/yourloading.gif"<%--
--%>}}});Si votre module requiert le module wp_portal, la configuration de portail est chargée avant la configuration de votre module, ce qui garantit que votre substitution est fusionnée en dernier.
Remplacez les occurrences de your* en italique par les noms réels de vos items.
Procédure
- Créez un point d'extension (définition de module) dans le fichier plugin.xml de votre thème avec des sous-contributions pour la configuration du module.
<extension point="com.ibm.portal.resourceaggregator.module" id="yourprefix_yourmodule_config"> <module id="yourprefix_yourmodule"> <prereq id="wp_portal"/> <contribution type="config"> <sub-contribution type="config_static"> <uri value="res:{war:context-root}/yourmodule/markup/config_global.jsp" /> </sub-contribution> <sub-contribution type="config_dynamic"> <uri value="res:{war:context-root}/yourmodule/markup/config.jsp" /> </sub-contribution> </contribution> </module> </extension> - Ajoutez votre moduleID au fichier de profil correspondant à votre thème de sorte que votre module soit chargé.
- Créez le fichier config_global.jsp, le fichier config.jspou les deux dans vos modules d'application Web dans le dossier \yourmodule\markup.
L'exemple suivant de fichier config.jsp est chargé de manière dynamique. Un fichier config_global.jsp (statique) serait similaire, sauf qu'il ne contiendrait aucune propriété de métadonnées relative à un thème.
<%@ page session="false" contentType="text/javascript;charset=ISO-8859-1" buffer="none" %> <%@ page trimDirectiveWhitespaces="true" %> <%@ taglib uri="http://www.ibm.com/xmlns/prod/websphere/portal/v8.5/portal-fmt" prefix="portal-fmt" %> i$.merge({<%-- --%>yourcoCfg: {<%-- --%>themesConfig: {<%-- --%>modules_contextRoot: "<portal-fmt:out escape="json">${wp.rep["REP.YourPrefix ThemesConfig"]["modules.contextRoot"]}</portal-fmt:out>",<%-- --%>yourTheme_contextRoot: "<portal-fmt:out escape="json">${wp.rep["REP.YourPrefix ThemesConfig"]["yourTheme.contextRoot"]}</portal-fmt:out>",<%-- --%>yourTheme_yourRepProperty: "<portal-fmt:out escape="json">${wp.rep["REP.YourPrefix ThemesConfig"]["yourTheme.yourRepProperty"]}</portal-fmt:out>",<%-- --%>yourTheme_yourMetadataProperty: "<portal-fmt:out escape="json">${wp.themeConfig["yourTheme.yourMetadataProperty"]}</portal-fmt:out>"<%-- --%>yourModule_yourRepProperty: "<portal-fmt:out escape="json">${wp.rep["REP.YourPrefix ThemesConfig"]["yourModule.yourRepProperty"]}</portal-fmt:out>",<%-- --%>}}});Si la variable globale yourcoCfg et la propriété enfant themesConfig n'existent pas, la fusion les crée automatiquement. Vous pouvez également mélanger vos propriétés avec n'importe quelles autres propriétés existant déjà si l'objet yourcoCfg existe.
- Si vous avez activé le rechargement des JSP dans vos applications Web, redémarrez l'application Web pour vos modules et l'application Web pour votre thème. Sinon, redémarrez le serveur de portail.
- Redémarrez le serveur de portail.