Personnalisation du connecteur
Personnalisation de l'affichage en FO
L'affichage des documents HAL est géré par Tiles et paramétré dans tiles-connecteurhal.xml.
Il est possible de supprimer l'affichage automatique du plugin pour une fiche en ajoutant la propriété classesAffichageSpecifique avec la liste des fiches.
<bean id="beanOverridden" class="com.kportal.core.context.AttributeToOverrideBean">
<property name="idExtensionToMerge" value="com.kosmos.connecteurhal.util.ConnecteurHalUtil.ID_EXTENSION"/>
<property name="idBeanToMerge" value="pluginPublicationHalPlugin"/>
<property name="attributes">
<entry key="classesAffichageSpecifique">
<list>
<value>com.ksup.objetspartages.om.Formation</value>
</list>
</entry>
</property>
</bean>
Pour une simple modification de l'affichage, il suffit de surcharger documentsHal.jsp.
Personnalisation des champs
Pour récupérer plus de champs de l'API, il faut personnaliser plusieurs classes du connecteur.
Créer un ViewModel spécifique implémentant DocumentHalDefaultViewModel
public class ProjetDocumentViewModel extends DocumentHalDefaultViewModel {
/**
* La donnée à ajouter.
*/
private String data;
public String getData() {
return data;
}
public void setData(final String data) {
this.data = data;
}
}
Créer un preparer héritant de HalDefaultViewPreparer.
public class ProjetHalViewPreparer extends HalDefaultViewPreparer<ProjetDocumentViewModel, DocumentHalDefaultBean> {
/**
* {@inheritDoc}
*/
public ProjetDocumentViewModel createViewModel() {
return new ProjetDocumentViewModel();
}
/**
* {@inheritDoc}
*/
public void populateViewModel(final DocumentHalDefaultBean documentHalBean, final ProjetDocumentViewModel documentHalDefaultViewModel) {
super.populateViewModel(documentHalBean, documentHalDefaultViewModel);
final Map<String, Object> champsAutres = documentHalBean.getOtherfields();
if (champsAutres.containsKey("champ_a_ajouter")) {
documentHalDefaultViewModel.setData((TypeData) champsAutres.get("champ_a_ajouter"));
}
}
Créer un bean héritant de DocumentHalDefaultBean. Ajouter les champs à récupérer de l'API.
public class ProjetDocumentHalBean extends DocumentHalDefaultBean {
@JsonProperty("champ_a_ajouter")
private String champAAjouter;
/**
* Constructeur.
*/
public ProjetDocumentHalBean() {
super();
}
public void setChampAAjouter(final String champAAjouter) {
this.champAAjouter = champAAjouter;
}
public String getChampAAjouter() {
return champAAjouter;
}
}
Dans le fichier resources/application_connecteurhal.properties, déclarer la propriété HAL_CHAMPS_RETOUR_JSON pour ajouter le nom du champ supplémentaire à récupérer de l'API.
#Liste des champs retournés dans le flux json
HAL_CHAMPS_RETOUR_JSON=docid,docType_s,title_s,authFullName_s,doiId_s,volume_s,page_s,producedDate_tdate,producedDateD_i,producedDateM_i,producedDateY_i,peerReviewing_s,journalTitle_s,uri_s,publicationLocation_s,publisher_s,champ_a_ajouter
Personnaliser la définition Tiles pour référencer le ViewPreparer spécifique.
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
"http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>
<definition name="tiles.connecteurhal.documents" template="/extensions/connecteurhal/WEB-INF/jsp/connecteurHal/documentsHal.jsp"
preparer="fr.projet.connecteurhal.ProjetHalViewPreparer"/>
</tiles-definitions>
Personnaliser le css
Les variables suivantes peuvent être personnalisées.
--hal-accent-color: #AB1919; /* Couleur de mise en avant (titre et bouton) */
--hal-tag-background-color: #cecece; /* Couleur de fond de la pastille du type de publication */
--hal-tag-color: #020202; /* Couleur du texte de la pastille du type de publication */
--hal-tag-border-radius: 5px; /* Arrondi de la pastille du type de publication */
--hal-document-background-color-hover: #ccc; /* Couleur de fond d'un document au survol */
--hal-document-background-color-even: #dfdfdf; /* Couleur de fond d'un document ligne pair */
--hal-document-background-color-odd: #efefef; /* Couleur de fond d'un document ligne impair */
--hal-document-border-radius: 5px; /* Arrondi d'un document */
Exemple :
.documents_hal {
--hal-accent-color: #ff00dd;
}