3. La version 4.7¶
3.1. Les nouveautés de la version 4.7¶
- Amélioration de l’ergonomie : Suppression de l’affichage du formulaire désactivé lors de la validation avec succès d’un formulaire (on revient directement à l’écran du lien retour) [#8957]
- Ajout d’une classe permettant les appels à des services REST [#8933]
- Réorganisation du code, nettoyage et suppression de fichiers inutiles
- [#8894] Suppression du script css/main.css non utilisé
- [#8895] Suppression du script css/layout_jquerymobile_after.css non utilisé
- [#8896] Suppression du widget de formulaire comboc non fonctionnel
- [#8897] Suppression de la fonction adresse_postale non fonctionnelle
- [#8965] Gestion des snippets de formulaires
- [#8966] Supprimer les répertoires scr/ et spg/
- [#8962] Supprimer la fonction genaff
- [#8959] Rendre optionnelles les surcharges des classes du framework
- [#8961] Factoriser du code en créant la classe om_base
- [#8963] Déplacer les web assets vers le répertoire lib/
- [#8964] Déplacer la fonction direct_link de spg -> core
3.2. Mettre à niveau depuis openMairie 4.6 vers 4.7¶
3.2.1. Mettre à jour les références externes¶
Mettre à jour le contenu du fichier EXTERNALS.txt
à la racine du projet, et activer ces nouvelles références externes comme indiqué dans le chapitre sur SVN.
3.2.2. Mettre à jour la base de données¶
La structure de la base de données d’openMairie n’a pas changée depuis la version 4.6.0. Si ça avait été le cas, pour mettre à jour la base de données depuis cette version il aurait fallu exécuter le script SQL data/pgsql/v4.7.0.sql
.
3.2.3. Gestion de la suppression des répertoires scr/
et spg/
¶
Pour éviter les multiples points d’entrées, et éviter de récupérer des répertoires inutilement depuis le framework. Nous avons supprimé le répertoire scr/
. Il y a désormais un point d’entrée unique que l’on peut créer n’importe où, par défaut : app/index.php
.
<?php /** * Ce script permet d'interfacer l'application. * * @package openmairie_exemple * @version SVN : $Id$ */ require_once "../obj/utils.class.php"; $flag = filter_input(INPUT_GET, 'module'); if (in_array($flag, array("login", "logout", )) === false) { $flag = "nohtml"; } $f = new utils($flag); $f->view_main(); ?>
Ce script permet de remplacer tous les scripts présents dans le répertoire scr/
.
Pour suivre le mode fonctionnement par défaut des fichiers index, on conseille donc de:
remplacer le contenu du fichier
app/index.php
par celui indiqué ci-dessusremplacer le contenu du fichier
./index.php
par celui indiqué ci-dessous<?php /** * Ce fichier permet de faire une redirection vers la page de login de * l'application. * * @package openmairie_exemple * @version SVN : $Id: index.php 38 2018-04-18 14:04:24Z laurent $ */ // $came_from = ""; if (isset($_GET['came_from'])) { $came_from = $_GET['came_from']; } // header("Location: **app/index.php?module=login**&came_from=".urlencode($came_from)); ?>
Remplacement de tous les liens dans le code PHP , notamment les fichiers dyn/menu.inc.php
, dyn/action.inc.php
et dyn/shortlinks.inc.php
:
"../scr/form.php?"
parOM_ROUTE_FORM."&"
,"../scr/sousform.php?"
parOM_ROUTE_SOUSFORM."&"
,"../scr/tab.php?"
parOM_ROUTE_TAB."&"
,"../scr/soustab.php?"
parOM_ROUTE_SOUSTAB."&"
,"../scr/dashboard.php"
parOM_ROUTE_DASHBOARD
,"../scr/edition.php"
parOM_ROUTE_MODULE_EDITION
,"../scr/gen.php"
parOM_ROUTE_MODULE_GEN
,"../scr/reqmo.php"
parOM_ROUTE_MODULE_REQMO
,"../scr/import.php"
parOM_ROUTE_MODULE_IMPORT
,"../scr/login.php"
parOM_ROUTE_LOGIN
,"../scr/logout.php"
parOM_ROUTE_LOGOUT
,"../scr/password.php"
parOM_ROUTE_PASSWORD
,
et de façon moins mécanique:
"../scr/login.php?mode=password_reset"
parOM_ROUTE_PASSWORD_RESET
,"../scr/tab_sig.php?"
parOM_ROUTE_MAP."&mode=tab_sig&"
,- …
Remplacement de tous les liens dans le code javascript :
"../scr/form.php?"
par"../app/index.php?module=form&"
"../scr/tab.php?"
par"../app/index.php?module=tab&"
- …
Remplacement de tous les éléments ‘open’ dans dyn/menu.inc.php
. Par exemple :
<?php ... "open" => array( "tab.php|concessionnaire_archive", "form.php|concessionnaire_archive", ), ... ?>
se remplace par :
<?php ... "open" => array( "index.php|concessionnaire_archive[module=tab]", "index.php|concessionnaire_archive[module=form]", ), ... ?>
Remplacement de tous les liens vers les scripts du répertoire spg/
vers le nouveau point d’entrée :
"../spg/file.php?"
par"".OM_ROUTE_FORM."&snippet=file&"
ou"../app/index.php?module=form&snippet=file&"
"../spg/voir.php?"
par"".OM_ROUTE_FORM."&snippet=voir&"
ou"../app/index.php?module=form&snippet=voir&"
"../spg/combo.php?"
par"".OM_ROUTE_FORM."&snippet=combo&"
ou"../app/index.php?module=form&snippet=combo&"
"../spg/autocomplete.php?"
par"".OM_ROUTE_FORM."&snippet=autocomplete&"
ou"../app/index.php?module=form&snippet=autocomplete&"
"../spg/localisation.php?"
par"".OM_ROUTE_FORM."&snippet=localisation&"
ou"../app/index.php?module=form&snippet=localisation&"
"../spg/upload.php?"
par"".OM_ROUTE_FORM."&snippet=upload&"
ou"../app/index.php?module=form&snippet=upload&"
"../spg/direct_link.php?"
par"".OM_ROUTE_FORM."&direct_link=true&"
ou"../app/index.php?module=form&direct_link=true&"
"../spg/map_*.php?"
par"".OM_ROUTE_MAP."&mode=*&"
ou"../app/index.php?module=map&mode=*"
3.2.4. Remettre à jour le fichier obj/utils.class.php
¶
En comparant le fichier obj/utils.class.php
présent dans le framework, on voit plusieurs points à mettre à jour si ce n’est déjà fait:
Il faut refaire le lien avec les feuilles de style om-theme en surchargeant la classe om_application avec le code suivant:
<?php ... /** * Surcharge systématique (cf openmairie_exemple) utilisation optionnelle du thème om-theme * @return void */ function setDefaultValues() { $this->addHTMLHeadCss( array( "../lib/om-theme/jquery-ui-theme/jquery-ui.custom.css", "../lib/om-theme/om.css", ), 21 ); } ... ?>
On peut aussi acter du caractère optionnel des fichiers
dyn/locales.inc.php
etdyn/debug.inc.php
avec une instruction php : if (file_exists(« ../dyn/*<fichier>*.inc.php ») === true) { …Enfin, si ce n’a pas été fait lors de mise à niveau précédente, on peut définir les propriétés par défaut de la classe application:
- $_application_name
- $html_head_title
- $_session_name
- $html_head_favicon
- …
3.2.5. Lancer une regénération complète¶
Cette nouvelle version comprend des modifications du générateur. Une regénération complète est nécessaire pour le bon fonctionnement de la nouvelle version.
3.2.6. Utilisation d’une méthode d’instanciation des classes om_*¶
Remplacer :
require_once « ../core/om_reqmo.class.php »; $inst_reqmo = new reqmo();
par :
$inst_reqmo = $f->get_inst__om_reqmo();