Ajout d'une nouvelle collection dans maarch v3 : Tuto en version FR
Cette section présente un tutoriel sur la création d'une nouvelle collection dans maarch v3. Le tutoriel est organisé en plusieurs parties :
partie 1 : ce qu'il faut savoir avant de commencer
1.1 - Il existe deux types de collections dans maarch v3; 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.
1.2 - Description de la collection facture :
1.3 - Description de la collection dossier :
partie 2 : les modifications dans les schémas XML
partie 3 : les modifications dans la base de donnée
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.
partie 4 : les modifications dans les scripts
AJOUTER UNE NOUVELLE COLLECTION DANS MAARCH V3
Modifications dans les fichiers XML
Voici la procédure pour ajouter une nouvelle collection dans Maarch Framework :
N.B: 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 (…\xampp\htdocs\Maarch_v3\apps\maarch_sample\xml\config.xml
les collections déjà créées suivent un ordre chronologique.
1-Ajouter votre collection dans le fichier config.xml du répertoire ‘apps’
…\xampp\htdocs\Maarch_v3\apps\maarch_sample\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 v3, 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 v3, 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 aussi utiliser des scripts spécifiques (ou pas) pour sa gestion (ajout, recherche, liste de résultat, page de détail).
Res_x dans la 1ère collection correspond à res_invoices pour la 2nd collection idem pour les fichiers php.
Pour la vôtre (collection) vous devez 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>
2-Faites maintenant une petite modification dans le répertoire suivant :
…\xampp\htdocs\Maarch_v3\apps\maarch_sample\lang
Vous trouverez dans ce répertoire le fichier 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','Nom à afficher pour votre nouvelle collection');
Ce qui donnerait, dans le cas de 'coll_2' plus haut :
if (!defined('_INVOICES')) define ('_INVOICES','Les entrées des voix...');
3-Nous passons maintenant à l’étape ‘modules’ :
Dans le répertoire …\xampp\htdocs\Maarch_v3\modules\indexing_searching\xml il faut maintenant modifier le fichier services.xml
Il faudra créer un service, l’opération effectuée ici est similaire à celle du point N°1 (copier-coller) puisque MAARCH SAS propose des exemples (modèles).
Nous avons ici une balise <SERVICE> avec son fils <WHEREAMIUSED> suivez bien la structure, on remarque que :
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>
4-Dans le fichier ‘fr.php’
…\xampp\htdocs\Maarch_v3\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 majustcule de votre collection)', un petit commentaire genre : 'Droit d´indexer une nouvelle collection ');
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 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’ indiqué le chemin d’accès au repertoire de votre collection dans le docserver DocServer (…:\\Maarch\\DocServer\\res_votrecollection\\). Pour le champ ‘coll_id’ insérez coll_3 en suivant le modèles invoices et documents.
Dans le table doctypes insérer dans le champ ‘coll_id’ le id 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.
1-Modification des scripts php du module indexing_searching
Observez bien les scripts php vous remarquez un certain ordre par 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 coller le fichier de la collection que vous avez choisie comme modèle et commencer les modification 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 copiez 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.