Skip to content
Snippets Groups Projects
CONTRIB.fr.md 6.2 KiB
Newer Older
Laurent's avatar
Laurent committed
# Contribuer au code source

## Contenu
Laurent's avatar
Laurent committed
* [Prérequis](#Prérequis)
* [Créer sa copie du projet](#Créer-sa-copie-du-projet)
Laurent's avatar
Laurent committed
* [Contribuer au code](#Contribuer-au-code)
Laurent's avatar
Laurent committed
* [Créer un nouveau skin](#Créer-un-nouveau-skin)

## Prérequis
Laurent's avatar
Laurent committed

Les équipes de développement AFI et Biblibre utilisent le [sytème de gestion de développement](https://fr.wikipedia.org/wiki/Forge_%28informatique%29) libre [GitLab](https://www.gitlab.com) et le [système de gestion de version](https://fr.wikipedia.org/wiki/Gestion_de_versions) [Git](http://www.git-scm.com). Ce document décrit l'utilisation minimale nécessaire de ces deux outils pour pouvoir contribuer au code des projets maintenus par AFI et Biblibre. Néanmoins nous vous invitons à lire le livre [Pro Git](http://git-scm.com/book/fr).

Laurent's avatar
Laurent committed
Nous hébergeons les codes sources des projets sur une instance de GitLab accessible à l'URL https://git.afi-sa.fr. Les projets publics sont accessibles sans compte à l'URL https://git.afi-sa.fr/public.


## Créer sa copie du projet

### Créer un compte gitlab

Depuis la page [Sign Up](http://git.afi-sa.fr/users/sign_up) vous pouvez créer votre compte. Un mail sera automatiqument envoyé pour vous confirmer l'accès. 
Laurent's avatar
Laurent committed


### Cloner le projet

Une fois connecté, depuis la [page du project OPACCE](http://git.afi-sa.fr/afi/opacce), cliquez sur le bouton **Fork repository**. Vous pouvez aussi cloner le projet via [ce lien](http://git.afi-sa.fr/afi/opacce/fork).

Cela vous créera une copie intégrale du projet, accessible publiquement à l'adresse http://git.afi-sa.fr/mon_compte/opacce.


L'accès SSH au dépôt git est donné sur la page d'accueil de votre projet. Par exemple git@git.afi-sa.fr:mon_compte/opacce.git
Laurent's avatar
Laurent committed
### Installer l'accès SSH
Laurent's avatar
Laurent committed

Laurent's avatar
Laurent committed
Le poussage de modifications sur gitlab requiert un accès ssh.  Sur [la page de modification de votre profil](http://git.afi-sa.fr/profile), à l'onglet [SSH Keys](http://git.afi-sa.fr/profile/keys), le lien [Add SSH Key](http://git.afi-sa.fr/profile/keys/new) permet d'ajouter une clé.
Laurent's avatar
Laurent committed

Laurent's avatar
Laurent committed
Si vous posséder déjà une clé sur votre poste de travail dans **~/.ssh/id_rsa.pub**, copiez le contenu.
Laurent's avatar
Laurent committed

Laurent's avatar
Laurent committed
Sinon pour [générer une clé SSH sur votre poste de travail](http://git.afi-sa.fr/help/ssh), utilisez la commande suivante:
```bash
ssh-keygen -t rsa -C "addresse_email@domaine.ext"
```
Laurent's avatar
Laurent committed

Laurent's avatar
Laurent committed
et pour afficher le contenu:
```bash
cat ~/.ssh/id_rsa.pub
```
Laurent's avatar
Laurent committed

Laurent's avatar
Laurent committed

Laurent's avatar
Laurent committed
## Contribuer au code

### Installer sa copie de l'OPAC

L'installation se déroule comme décrit [dans la procédure d'installation](INSTALL.md), excepté que la command pour cloner le projet décrite dans la section [Récupération des sources](INSTALL.md#Récupération-des-sources) utilise votre propre dépôt:
Laurent's avatar
Laurent committed
```bash
cd /var/www
git clone git@git.afi-sa.fr:mon_compte/opacce.git
```

### Faire des modifications et les pousser vers gitlab

Une fois quelques modifications effectuées, l'envoie des données se fait en deux temps.

1. Commit des modifications sur votre machine en local
```bash
git commit -a -m "Commentaires des modifications"
```

2. Pousser les modifications de votre branche master vers gitlab (origin):
```bash
git push origin master
```

Pour plus de détails, consultez [Pro Git](http://git-scm.com/book/fr)


### Proposer les modifications aux mainteneurs de la version officielle

Sur la page de votre projet GitLab, onglet **Merge Requests**, cliquez sur le lien **+ New Merge Request** et remplissez les différents champs pour décrire vos modifications. 


### Récupérer les dernières modifications de la version officielle

Tout d'abord, il faut déclarer dépôt de la version officielle (upstream) dans votre projet local:
```bash
git remote add upstream git@git.afi-sa.fr:afi/opacce.git
```

Ceci fait, vous pouvez fusionner les modifications dans votre branche:

```bash
# Télécharge toutes les nouvelles modifications du dépôt distant
git fetch upstream master
# Fusionne les nouvelles modifications dans votre répertoire
git merge upstream/master
# Pousse la fusion sur gitlab
git push origin master
```
Laurent's avatar
Laurent committed



## Créer un nouveau skin

### Création
Laurent's avatar
Laurent committed

Se placer dans le répertoire skins à la racine de l'OPAC et recopier le skin modele

Laurent's avatar
Laurent committed
```bash
Laurent's avatar
Laurent committed
cd skins
cp -a ../public/opac/skins/modele mon_skin
Laurent's avatar
Laurent committed
```
Laurent's avatar
Laurent committed

Aller dans la configuration d'un profil de l'OPAC, le nouveau skin devrait être disponible dans le sélecteur de thème.



Laurent's avatar
Laurent committed
### Sauvegarde sur GitLab
Laurent's avatar
Laurent committed

Créer le projet sur [GitLab](https://www.git.afi-sa.fr) pour stocker les sources. Par exemple https://git.afi-sa.fr/mon_compte/mon_skin.

Aller dans le répertoire mon_skin et initialiser le dépôt:

Laurent's avatar
Laurent committed
```bash
Laurent's avatar
Laurent committed
cd mon_skin
git init
git remote add origin -t master git@git.afi-sa.fr:mon_compte/mon_skin.git
git add *
git commit -m "Premier commit"
git push origin master
Laurent's avatar
Laurent committed
```
Laurent's avatar
Laurent committed

Ceci fait, les nouveaux fichiers devraient être accessibles sur https://git.afi-sa.fr/mon_compte/mon_skin/files


Laurent's avatar
Laurent committed
### Description des répertoires

* **css/** contient le fichier global.css sur lequel travailler. Les autres fichiers sont destinés à devenir obsolètes.
* **images/** les icones, dont **images/support/** pour les types de support. Les fichiers doivent être nommés comme suit: **support_id_.png**, par exemple **support_1.png** pour les livres.
* **templates/** les modèles de rendu boite de la page d'accueil. Les fichiers doivent êtres nommés en séparant les mots par des tirets bas **_**, qui seront dans la configuration des boîtes **Style de boîte**. Chaque modèle de boîte peut inclure les tags **{TITRE}**, **{RSS}**, **{CONTENU}**. Pour avoir un rendu conditionnel, le fichier peut inclure les conditions **{IF-TITRE}**, **{IF-RSS}**, **{IF-CONTENU}** suivi de la balise **{ENDIF}**

```html
<div class="right-box">
	<div class="right-box-inner">
		{IF-TITRE}
		<div class="header">
			<div><h1>{TITRE}</h1></div>
			<div class="rss">{RSS}</div>
		</div>
		{ENDIF}
		<div class="content">
			{CONTENU}
		</div>
	</div>
</div>
```


Tous les fichiers de vue du répertoire **application/modules/opac/views/scripts** peuvent être redéfinis dans un répertoire html. Les principaux sont:
* **footer.phtml** pour le pied de page
* **banniere.phtml** pour l'en-tête
* **skin_head.phtml** pour rajouter des éléments dans la balise **head** du site
Laurent's avatar
Laurent committed
* **accueil.phtml** pour la page d'accueil
* **contenu.phtml** pour les autres pages
Laurent's avatar
Laurent committed