Question

Je remplace beaucoup de fonctionnalités du portail SAP dans mon projet actuel. Je dois créer un cadre personnalisé de largeur fixe, des plateaux iView personnalisés, des fonctionnalités d'API KM personnalisées, etc.>

Avec toutes ces parties personnalisées, je n'utiliserai pas beaucoup de la fonctionnalité de style mise en œuvre par l'éditeur de thèmes de SAP. Ce que je voudrais faire, c'est créer un CSS externe, le stocker en dehors du portail et le référencer. Le stockage externe facilitera les mises à jour plutôt que de stocker le CSS dans une application de portail. Cela permettrait également à toutes les pièces personnalisées d'avoir leur style à la même place.

Malheureusement, je n'ai pas trouvé le moyen d'accéder à la partie HEAD de la page qui me permet d'insérer une feuille de style externe. Les applications de portail peuvent ainsi utiliser l’objet IResource pour accéder aux références internes, mais pas aux éléments d’un autre serveur.

Je recherche des idées qui me permettraient d’obtenir cette fonctionnalité. posté sur le nom de domaine de SAP de SAP, mais Je pense que je vais obtenir une meilleure réponse ici.

Était-ce utile?

La solution

Je considérerais cela comme du bidouillage, mais en tant que développeur non-portail, j’envisagerais d’utiliser JavaScript pour insérer un nouvel élément de lien dans l’en-tête pointant vers votre nouveau fichier CSS. Bien sûr, vous aurez un flash de contenu sans style car le script ne fonctionnera probablement qu'après qu'une partie de la page ait été téléchargée et rendue, mais cela peut constituer une solution adéquate.

Autres conseils

Je déteste répondre à ma propre question, mais j’ai trouvé une solution potentielle qui n’est pas bien documentée et qui utilise généralement des méthodes obsolètes. Donc, cela pourrait être un peu moins sale que ce que Eric a suggéré. Je l'ai trouvé dans un message non publié sur le forum SDN.

En gros, vous plongez dans l'objet de requête et collectez le PortalNode. Une fois que vous avez cela, vous lui demandez une valeur de IPortalResponse. Cet objet peut être converti en un PortalHtmlResponse. Cet objet a une méthode obsolète appelée getHtmlDocument. En utilisant cette méthode, vous pouvez utiliser certains objets miroir HTML pour obtenir la tête et insérer de nouveaux liens.

Exemple:

IPortalNode node = request.getNode().getPortalNode();
IPortalResponse resp = (IPortalResponse) node.getValue(IPortalResponse.class.getName());
if (resp instanceof PortalHtmlResponse) {
    PortalHtmlResponse htmlResp = (PortalHtmlResponse) resp;
    HtmlDocument doc = htmlResp.getHtmlDocument();
    HtmlHead myHead = doc.getHead();
    HtmlLink cssLink = new HtmlLink("http://myserver.com/css/mycss.css");
    cssLink.setType("text/css");
    cssLink.setRel("stylesheet");
    myHead.addElement(cssLink);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top