Aller à : navigation, rechercher

Maarch Courrier/latest/fr/Tutorials/Ajouter collection

Ajout d'une nouvelle collection dans Maarch Courrier

Cette section présente un tutoriel sur la création d'une nouvelle collection dans Maarch Courrier. Le tutoriel est organisé en plusieurs parties :

Ce qu'il faut savoir avant de commencer

Il existe plusieurs types de collections dans Maarch Courrier. Dans l'exemple proposé, on trouve la collection Facture et la collection Dossier Immobilier. Ces deux collections sont de type différent. Elles ont des logiques différentes dans leurs scripts, leurs tables dans la base de données et leur schéma XML. Avant de démarrer il faut savoir quel est le type de la collection que vous voulez ajouter. Une description est proposée pour chaque collection pour y voir plus clair.

Description de la collection facture :

Description de la collection dossier :

Les modifications dans les schémas XML

N'hésitez pas à vous inscrire sur le wiki pour améliorer ou commenter cette procédure, mais sinon elle a été testée et elle marche.

Avant tout, remarquez que chaque collection créée dispose d'une table nommée : res_(nom de votre collection) et d'une vue : res_view_(nom de votre collection). Aussi dans le fichier config de l’apps (apps\maarch_sample\xml\config.xml) les collections déjà créées suivent un ordre chronologique.

Ajouter votre collection dans le fichier config.xml du répertoire ‘apps’

\maarch_entreprise\xml\config.xml

Ici nous avons les deux collections d’exemple qui sont dans des balises fils ‘ <collection>’, Pour la 1ère collection nous avons :

<COLLECTION>
		<id>coll_1</id>
		<label>_DOCUMENTS</label>
		<table>res_x</table>
		<view>res_view</view>
		<index_file>index.xml</index_file>
		<script_add>index_documents.php</script_add>
		<script_search>search_with_folder.php</script_search>
		<script_search_result>list_results_documents.php</script_search_result>
		<script_details>details_documents.php</script_details>
</COLLECTION>
Pour la seconde on a :
<COLLECTION>

     <id>coll_2</id> 
     <label>_INVOICES</label>
     <table>res_invoices</table>
     <view>res_view_invoices</view> 
     <index_file>index2.xml</index_file> 
     <script_add>index_invoices.php</script_add> 
     <script_search>search_without_folder.php</script_search> 
     <script_search_result>list_results_invoices.php</script_search_result> 
     <script_details>details_invoices.php</script_details> 

</COLLECTION>
Avant d'aller plus loin, faisons une petite pause pour expliquer ce qu'est une collection. Dans les grandes lignes, c'est une table de la base qui va contenir les index (les metadonnées) pour les ressources conservées. Dans Maarch Courrier, on emballe cette table dans une notion plus large qui est celle de la collection, et qui va aussi fournir d'autres informations sur la façon de gérer ces informations. Une avancée principale est l'ajout systématique d'une vue (balise view) pour mener les opérations de consultation (la table servant pour les mises à jour et les insertions). Ainsi, dans Maarch Courrier, tous les accès en consultation se font par l'intermédiaire de la vue et non de la table directement. Ceci permet de positionner des jointures sur les tables du référentiel, afin d'avoir des résultats exploitables facilement. Il y a aussi une balise <index_file>, qui pointe sur un fichier listant les index fonctionnels pour la collection et leur description. Chaque collection peut utiliser des scripts spécifiques (ou pas) pour sa gestion (ajout, recherche, liste de résultat, page de détail).

Pour votre nouvelle collection, vous pouvez copier l’une de ces collections d’exemple, coller après la 2nd collection puis faire les modifications comme indiqué on aura ainsi pour la nouvelle collection :

<COLLECTION>
		<id>coll_3</id>
		<label>_VOTRE COLLECTION</label>
		<table>res_(votre collection)</table>
		<view>res_view_(votre collection)</</view>
		<index_file>index3.xml</index_file>
		<script_add>index_(votre collection)</.php</script_add>
		<script_search>search_without_folder.php</script_search>
		<script_search_result>list_results_(votre collection)</.php</script_search_result>
		<script_details>details_(votre collection)</.php</script_details>
</COLLECTION>

Faites maintenant une petite modification dans le répertoire suivant

…apps\maarch_entreprise\lang

Vous trouverez dans ce répertoire le fichier de traduction fr.php pour la langue française et en.php pour l’anglais.

Dans le fichier ‘fr.php’ ajoutez votre collection, vous trouverez un commentaire //COLLECTIONS

define('_MAILS', 'Courriers');
define('_DOCUMENTS', 'Prets immobiliers');
define('_INVOICES', 'Factures');
define('_NOM_DE_VOTRE_COLLECTION', 'Nom à afficher pour votre nouvelle collection');
define('_CHOOSE_COLLECTION', 'Choisir une collection');
NB : Dans certaines versions de Maarch, les lignes sont précédées d'un test, il suffit d'adapter le code de la manière suivante :
if (!defined('_NOM_DE_VOTRE_COLLECTION')) define ('_NOM_DE_VOTRE_COLLECTION','decription');

Ce qui donnerait, dans le cas de 'coll_2' plus haut :

if (!defined('_INVOICES')) define ('_INVOICES','Les entrées des voix...');

Nous passons maintenant à l’étape ‘modules’

Dans le répertoire …\modules\indexing_searching\xml il faut maintenant modifier le fichier services.xml

Il faudra créer un nouveau service. L’opération effectuée ici est similaire à celle du point N°1 (copier-coller). Des exemples modèles sont proposés.

Nous avons ici une balise <SERVICE> avec son fils <WHEREAMIUSED> suivez bien la structure, on remarque que :

  • chaque collection a sa balise <SERVICE>,
  • que les numéros des <id>, des <name>, des <servicepage>, des <page> (du fils <PROCESSINBACKGROUND>) et des <preprocess> sont incrémentaux,
  • et que le nom de la collection apparaît dans la balise <page> (du fils <WHEREAMIUSED>).

Retrouvez la collection que vous aviez choisi de suivre comme modèle puis faites un copier-coller comme ici :

3.1- Pour la collection factures.

<SERVICE>
   <id>select_doctype2</id>
   <name>_SELECT_DOCTYPE2</name>
   <comment>_SELECT_DOCTYPE</comment>
   <servicepage>select_type2.php</servicepage>
   <servicetype>use</servicetype>
   <enabled>true</enabled>
    <WHEREAMIUSED>
     <page>index_invoices.php</page>
     <nature>frame</nature>
	 <width>400</width>
     <height>80</height>
	 <scrolling>no</scrolling>
	 <border>0</border>
   </WHEREAMIUSED>
    </SERVICE>

Pour votre collection.

<SERVICE>
   <id>select_doctype3</id>
   <name>_SELECT_DOCTYPE3</name>
   <comment>_SELECT_DOCTYPE</comment>
   <servicepage>select_type3.php</servicepage>
   <servicetype>use</servicetype>
   <enabled>true</enabled>
    <WHEREAMIUSED>
     <page>index_(votre collection).php</page>
     <nature>frame</nature>
	 <width>400</width>
     <height>80</height>
	 <scrolling>no</scrolling>
	 <border>0</border>
   </WHEREAMIUSED>
</SERVICE>

Cette balise est la 1ère balise <SERVICE> à modifier ensuite nous avons la 2nd <SERVICE> avec ses fils <WHEREAMIUSED> et <PROCESSINBACKGROUND>.

Faites la même opération que l’étape 2.1 :

Pour la collection facture :

<SERVICE>
   <id>index_file2</id>
   <name>_INDEX_FILE_INV</name>
   <comment>_INDEX_FILE</comment>
   <servicepage>res_type2.php</servicepage>
   <servicetype>use</servicetype>
   <enabled>true</enabled>
    <WHEREAMIUSED>
     <page>index_invoices.php</page>
     <nature>frame</nature>
	 <width>515</width>
     <height>350</height>
	 <scrolling>auto</scrolling>
	 <border>0</border>
   </WHEREAMIUSED>
   <PROCESSINBACKGROUND>
     <page>file_index2.php</page>
	 <preprocess>res_type2_result_preprocess.php</preprocess>
	 <processorder>1</processorder>
   </PROCESSINBACKGROUND>
  </SERVICE>

Pour votre collection

Remarquez le chiffre 3 puisque nous ajoutons une 3ème collection.

<SERVICE>
   <id>index_file3</id>
   <name>_INDEX_FILE_(les 1ères letters en majustcule de votre collection)</name>
   <comment>_INDEX_FILE</comment>
   <servicepage>res_type3.php</servicepage>
   <servicetype>use</servicetype>
   <enabled>true</enabled>
    <WHEREAMIUSED>
     <page>index_(votre collection).php</page>
     <nature>frame</nature>
	 <width>515</width>
     <height>350</height>
	 <scrolling>auto</scrolling>
	 <border>0</border>
   </WHEREAMIUSED>
   <PROCESSINBACKGROUND>
     <page>file_index3.php</page>
	 <preprocess>res_type3_result_preprocess.php</preprocess>
	 <processorder>1</processorder>
   </PROCESSINBACKGROUND>
</SERVICE>

Dans le fichier ‘fr.php’

…\modules\indexing_searching\lang
define('_MODIFY_RESOURCE', 'Droit de modification des index d´un document'); 
define('_DELETE_RESOURCE', 'Droit de suppression d´un document'); 
define('_INDEX_FILE', 'Droit d´indexer un nouveau document'); 
define('_INDEX_FILE_DOC', 'Droit d´indexer un nouveau document'); 
define('_INDEX_FILE_INV', 'Droit d´indexer une nouvelle facture'); 
define('_INDEX_FILE__(les 1ères letters en majuscule de votre collection)', 
       un petit commentaire genre : 'Droit d´indexer une nouvelle collection ');

Les modifications dans la base de données

Chaque collection créée dispose d'une table nommée : res_(nom de votre collection) et d'une vue : res_view_(nom de votre collection).

Il faut créer la table res_(nom de votre collection) avec la même structure que res_x. Inspirez-vous de même de la vue existante pour créer votre nouvelle vue. La table res_() doit respecter scrupuleusement le schéma de res_x. Il y a plus de liberté pour la vue : vous pouvez la simplifier ou utiliser des tables de référence externes.

Pour la suite nous allons faire des modifications dans la base de données. J’indique ici les tables à modifier pour l’ajout d’une nouvelle collection.

En premier il faudra créer dans le répertoire DocServer les répertoires pour votre nouvelle collection on aura :

… \Maarch\DocServer\res_votrecollection et … \Maarch\DocServer\ res_votrecollection_ai

Dans la base de données, modifier la table docservers, insérer dans le champ ’docserver_id’ le nom de votre répertoire par exemple invoices et invoices_ai. Dans votre cas on aura : ‘votrecollection’ et ‘votrecollection_ai’.

Dans le champ ‘path_template,’ indiquer le chemin d’accès au répertoire de votre collection dans le docserver (…\Maarch\DocServer\res_votrecollection\). Pour le champ ‘coll_id’, insérer coll_3 en suivant les modèles invoices et documents.

Dans le table doctypes, insérer dans le champ ‘coll_id’, l'identifiant de votre collection disons : coll_3 et suivre le modèle de la collection que vous aviez choisi de reproduire.

La dernière étape consistera à modifier les scripts php.

Les modifications dans les scripts

Observez bien les scripts php. Vous remarquez un certain ordre, à titre d'exemple en premier vous avez les fichiers : file_index.php et file_index2.php, Le premier est lié à la première collection (prêt immobilier) et le second à la collection facture. Copiez puis collez le fichier de la collection que vous avez choisie comme modèle et commencez les modifications en renommant le fichier il sera nommé pour la 3ème collection :file_index3.php

Dans le fichier file_index2.php par exemple vous trouverez sur certaines lignes : ('index_file2'), res_type2.php, ouvrez le fichier que vous avez copié puis à la place des 2 mettez 3. Faire la même chose pour les autres fichiers liés aux collections

Roma911.

Merci aux maarch_men, @ Krimou sans oublier JLE.