{"id":2460,"date":"2016-07-04T13:29:19","date_gmt":"2016-07-04T11:29:19","guid":{"rendered":"http:\/\/blog.nebule.org\/?page_id=2460"},"modified":"2021-02-25T11:43:00","modified_gmt":"2021-02-25T09:43:00","slug":"applications","status":"publish","type":"page","link":"http:\/\/blog.nebule.org\/?page_id=2460","title":{"rendered":"Applications"},"content":{"rendered":"<p>Les applications d\u00e9velopp\u00e9es dans le cadre de nebule :<\/p>\n<ul>\n<li><a title=\"bootstrap\" href=\"http:\/\/blog.nebule.org\/?page_id=2462\">bootstrap<\/a> : le chargeur initial de la librairie et des applications.<\/li>\n<li><a title=\"sylabe\" href=\"http:\/\/www.sylabe.org\" target=\"_blank\" rel=\"noopener\">sylabe<\/a> (blog ind\u00e9pendant) : l&rsquo;application de r\u00e9f\u00e9rence des possibilit\u00e9s de <em>nebule<\/em>.<\/li>\n<li><a title=\"klicty\" href=\"http:\/\/www.klicty.org\" target=\"_blank\" rel=\"noopener\">klicty<\/a> (blog ind\u00e9pendant) : l&rsquo;application de partage d&rsquo;objets \u00e0 dur\u00e9e limit\u00e9e.<\/li>\n<li><a title=\"messae\" href=\"http:\/\/www.messae.org\" target=\"_blank\" rel=\"noopener\">messae<\/a> (blog ind\u00e9pendant) : l&rsquo;application de gestion des conversations et messages.<\/li>\n<li><a title=\"option\" href=\"http:\/\/blog.nebule.org\/?page_id=2465\">option<\/a> : l&rsquo;application de gestion des options.<\/li>\n<li><a title=\"upload\" href=\"http:\/\/blog.nebule.org\/?page_id=2467\">upload<\/a> : l&rsquo;application de chargement de mises \u00e0 jours.<\/li>\n<li><a title=\"defolt\" href=\"http:\/\/blog.nebule.org\/?page_id=2469\">defolt<\/a> : l&rsquo;application pour un affichage par d\u00e9faut sans application interactive.<\/li>\n<\/ul>\n<p style=\"text-align: center;\"><a href=\"\/wp-content\/uploads\/nebule\/2017\/10\/020171022-shot-2017-10-22_18-13-55.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-2975 size-full\" src=\"\/wp-content\/uploads\/nebule\/2017\/10\/020171022-shot-2017-10-22_18-13-55.png\" alt=\"020171022-shot-2017-10-22_18-13-55\" width=\"608\" height=\"80\" srcset=\"\/wp-content\/uploads\/nebule\/2017\/10\/020171022-shot-2017-10-22_18-13-55.png 608w, \/wp-content\/uploads\/nebule\/2017\/10\/020171022-shot-2017-10-22_18-13-55-600x79.png 600w\" sizes=\"(max-width: 608px) 100vw, 608px\" \/><\/a><\/p>\n<h2 style=\"text-align: justify;\">Fonctionnement<\/h2>\n<p style=\"text-align: justify;\">Dans la construction du code, il y a quatre niveaux. Chaque niveau de code est constitu\u00e9 d&rsquo;un et un seul objet nebule ou fichier utilis\u00e9. Une seule application est utilis\u00e9 \u00e0 un instant donn\u00e9 mais il peut y avoir plusieurs modules utilis\u00e9s par l&rsquo;application. Les niveaux :<\/p>\n<ol>\n<li>le bootstrap, <em>fichier<\/em> ;<\/li>\n<li>la librairie en PHP orient\u00e9 objet, <em>objet<\/em> ;<\/li>\n<li>une application au choix, <em>objets<\/em> ;<\/li>\n<li>des modules au choix, facultatifs, <em>objets<\/em>.<\/li>\n<\/ol>\n<p style=\"text-align: justify;\">Les applications sont toutes construites sur le m\u00eame mod\u00e8le et d\u00e9pendent (extend) toutes des m\u00eames classes de l&rsquo;application de r\u00e9f\u00e9rence dans la librairie <em>nebule<\/em>.<\/p>\n<p style=\"text-align: justify;\">Chaque application doit mettre en place les variables personnalis\u00e9es :<\/p>\n<ul>\n<li>$applicationName<\/li>\n<li>$applicationSurname<\/li>\n<li>$applicationDescription<\/li>\n<li>$applicationVersion<\/li>\n<li>$applicationLevel<\/li>\n<li>$applicationLicence<\/li>\n<li>$applicationAuthor<\/li>\n<li>$applicationWebsite<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Chaque application doit mettre en place les classes :<\/p>\n<ul>\n<li>Application<\/li>\n<li>Display<\/li>\n<li>Action<\/li>\n<li>Traduction<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Elles d\u00e9pendent respectivement des classes de l&rsquo;application de r\u00e9f\u00e9rence <em>Applications<\/em>, <em>Displays<\/em>, <em>Actions<\/em> et <em>Traductions<\/em> dans la librairie <em>nebule<\/em>.<\/p>\n<h2>Cr\u00e9er une nouvelle application<\/h2>\n<p style=\"text-align: justify;\">La cr\u00e9ation d&rsquo;une application se fait en deux \u00e9tapes, le r\u00e9f\u00e9rencement et le code.<\/p>\n<p style=\"text-align: justify;\">Tout se fait dans l&rsquo;application <em>sylabe<\/em>. Un module sera cr\u00e9er pour faciliter ce travail&#8230;<\/p>\n<h3 style=\"text-align: justify;\">Le r\u00e9f\u00e9rencement<\/h3>\n<p style=\"text-align: justify;\">Cette partie est \u00e0 faire au d\u00e9but lorsque l&rsquo;on veut rendre visible et utiliser la nouvelle application. Elle ne sera plus refaite par la suite. Le but est de permettre au <em>bootstrap<\/em> de retrouver l&rsquo;application et de permettre \u00e0 l&rsquo;utilisateur de la s\u00e9lectionner.<\/p>\n<p style=\"text-align: center;\"><a href=\"\/wp-content\/uploads\/nebule\/2016\/07\/boutons1.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-2769\" src=\"\/wp-content\/uploads\/nebule\/2016\/07\/boutons1.png\" alt=\"boutons\" width=\"80\" height=\"80\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">Le mot cl\u00e9 utilis\u00e9 :<\/p>\n<p style=\"text-align: center;\"><code>nebule\/objet\/interface\/web\/php\/applications<\/code><\/p>\n<p style=\"text-align: justify;\">On d\u00e9finit un objet de r\u00e9f\u00e9rence, un objet qui sera en quelque sorte virtuel puisqu&rsquo;il n&rsquo;aura pas de contenu. Sa seule contrainte forte est que l&#8217;empreinte est exprim\u00e9e en hexad\u00e9cimal. Par convention, il est recommand\u00e9 que la taille de l&#8217;empreinte des objets virtuels soit comprise en 129 et 191 bits. Cet objet de r\u00e9f\u00e9rence peut \u00eatre g\u00e9n\u00e9r\u00e9 al\u00e9atoirement ou au contraire avoir un contenu pr\u00e9-d\u00e9termin\u00e9, ou mixer les deux.<\/p>\n<p style=\"text-align: justify;\">Chaque application doit avoir un objet de r\u00e9f\u00e9rence qui lui est r\u00e9serv\u00e9. Utiliser l&rsquo;objet de r\u00e9f\u00e9rence d&rsquo;une autre application revient \u00e0 tenter de mettre \u00e0 jour l&rsquo;application, non \u00e0 en faire une nouvelle.<\/p>\n<p style=\"text-align: justify;\">Par exemple avec la commande : <code>openssl rand -hex 24<\/code><br \/>\nCela donne une valeur, notre objet de r\u00e9f\u00e9rence, qui ressemble \u00e0 \u00e7a :<br \/>\n<span style=\"color: #0000ff;\"><code>e5ce3e9938247402722233e4698cda4adb44bb2e01aa0687<\/code><\/span><\/p>\n<p style=\"text-align: justify;\">Pour finir avec l&rsquo;objet de r\u00e9f\u00e9rence, la couleur de l&rsquo;application d\u00e9pend de lui. Cette couleur \u00e9tant constitu\u00e9e des 6 premiers caract\u00e8res de l&#8217;empreinte de l&rsquo;objet de r\u00e9f\u00e9rence, il est possible de choisir volontairement cette couleur.<\/p>\n<p style=\"text-align: justify;\">L&rsquo;application doit avoir un nom et un pr\u00e9fixe. Ces deux propri\u00e9t\u00e9s sont utilis\u00e9es par le <em>bootstrap<\/em> pour l&rsquo;affichage des applications dans l&rsquo;application de s\u00e9lection des applications.<br \/>\nLe nom est libre mais si il est trop grand il sera tronqu\u00e9 pour tenir dans le carr\u00e9 de l&rsquo;application.<br \/>\nLe pr\u00e9fixe doit faire 2 caract\u00e8res. Si ce sont des lettres, syst\u00e9matiquement la premi\u00e8re sera transform\u00e9e en majuscule et la deuxi\u00e8me en minuscule.<\/p>\n<p>Par exemple :<br \/>\n&#8211; <code>sylabe<\/code><br \/>\n&#8211; <code>Sy<\/code><\/p>\n<p style=\"text-align: justify;\">Lorsque l&rsquo;on a d\u00e9fini notre objet de r\u00e9f\u00e9rence et le nom de l&rsquo;application, on cr\u00e9e les liens.<\/p>\n<p>Le lien de type d&#8217;empreinte de l&rsquo;objet de r\u00e9f\u00e9rence :<\/p>\n<ul>\n<li>action : <code>l<\/code><\/li>\n<li>source : objet de r\u00e9f\u00e9rence, par exemple = <span style=\"color: #0000ff;\"><code>e5ce3e9938247402722233e4698cda4adb44bb2e01aa0687<\/code><\/span><\/li>\n<li>cible : hash de la valeur de la caract\u00e9ristique = <code>5d5b09f6dcb2d53a5fffc60c4ac0d55fabdf556069d6631545f42aa6e3500f2e<\/code><\/li>\n<li>m\u00e9ta : hash de la caract\u00e9ristique =\u00c2\u00a0<code>8e2adbda190535721fc8fceead980361e33523e97a9748aba95642f8310eb5ec<\/code><\/li>\n<\/ul>\n<p>Le lien du nom de l&rsquo;objet de r\u00e9f\u00e9rence :<\/p>\n<ul>\n<li>action : <code>l<\/code><\/li>\n<li>source : objet de r\u00e9f\u00e9rence, par exemple = <span style=\"color: #0000ff;\"><code>e5ce3e9938247402722233e4698cda4adb44bb2e01aa0687<\/code><\/span><\/li>\n<li>cible : hash du nom, par exemple = sha256(&lsquo;<code>sylabe<\/code>&lsquo;)<\/li>\n<li>m\u00e9ta : hash de la caract\u00e9ristique = <code>940c75a60c14a24e5f8bda796f72bef57ab1f64713a6fefd9a4097be95a9e96a<\/code><\/li>\n<\/ul>\n<p>Le lien du pr\u00e9fixe de l&rsquo;objet de r\u00e9f\u00e9rence :<\/p>\n<ul>\n<li>action : <code>l<\/code><\/li>\n<li>source : objet de r\u00e9f\u00e9rence, par exemple = <span style=\"color: #0000ff;\"><code>e5ce3e9938247402722233e4698cda4adb44bb2e01aa0687<\/code><\/span><\/li>\n<li>cible : hash du pr\u00e9fixe, par exemple = sha256(&lsquo;<code>Sy<\/code>&lsquo;)<\/li>\n<li>m\u00e9ta : hash de la caract\u00e9ristique = <code>4e36fa58a64beebbfc69d2b3f3ecd75eeb2290780c39c14ff8f36473091544e5<\/code><\/li>\n<\/ul>\n<p>Le lien de r\u00e9f\u00e9rence :<\/p>\n<ul>\n<li>action : <code>f<\/code><\/li>\n<li>source : objet de r\u00e9f\u00e9rence des applications = <code>e0150ff815bd5343034ff025624d20f723e2293842ab4eaedabda1ea5790e66b<\/code><\/li>\n<li>cible : objet de r\u00e9f\u00e9rence, par exemple = <span style=\"color: #0000ff;\"><code>e5ce3e9938247402722233e4698cda4adb44bb2e01aa0687<\/code><\/span><\/li>\n<li>m\u00e9ta : objet de r\u00e9f\u00e9rence des applications = <code>e0150ff815bd5343034ff025624d20f723e2293842ab4eaedabda1ea5790e66b<\/code><\/li>\n<\/ul>\n<p>Pour que ces liens soient reconnus par le <em>bootstrap<\/em>, ils doivent tous \u00eatre sign\u00e9s d&rsquo;une autorit\u00e9 locale.<\/p>\n<h3 style=\"text-align: justify;\">Le code<\/h3>\n<p style=\"text-align: justify;\">La cr\u00e9ation de la base d&rsquo;une application est simple, il suffit de copier le mod\u00e8le d&rsquo;application dans un nouveau fichier et dans un premier temps d&rsquo;adapter les variables et la fonction d&rsquo;affichage.<\/p>\n<p style=\"text-align: justify;\">Le mod\u00e8le d&rsquo;application est disponible ici :<br \/>\n<a title=\"http:\/\/sylabe.com\/?mod=obj&amp;view=disp&amp;obj=8155d1b82703b18692748937ade2335510b568a3b17fc6e88fdc0d9e26acd113\" href=\"http:\/\/sylabe.com\/?mod=obj&amp;view=disp&amp;obj=8155d1b82703b18692748937ade2335510b568a3b17fc6e88fdc0d9e26acd113\" target=\"_blank\" rel=\"noopener\">http:\/\/sylabe.com\/?mod=obj&amp;view=disp&amp;obj=8155d1b82703b18692748937ade2335510b568a3b17fc6e88fdc0d9e26acd113<\/a><\/p>\n<p style=\"text-align: justify;\">Ensuite, ce fichier doit \u00eatre n\u00e9bulis\u00e9, c&rsquo;est \u00e0 dire transf\u00e9r\u00e9 vers le serveur comme nouvel objet.<\/p>\n<p style=\"text-align: justify;\">Une fois n\u00e9bulis\u00e9, l&rsquo;objet peut \u00eatre d\u00e9clar\u00e9 par un lien comme code pour l&rsquo;objet de r\u00e9f\u00e9rence de l&rsquo;application :<\/p>\n<ul>\n<li>action : <code>f<\/code><\/li>\n<li>source :\u00c2\u00a0objet de r\u00e9f\u00e9rence de l&rsquo;application, par exemple =\u00c2\u00a0<span style=\"color: #0000ff;\"><code><code>e5ce3e9938247402722233e4698cda4adb44bb2e01aa0687<\/code><\/code><\/span><\/li>\n<li>cible :\u00c2\u00a0hash du code<\/li>\n<li>m\u00e9ta : objet de r\u00e9f\u00e9rence des applications = <code>e0150ff815bd5343034ff025624d20f723e2293842ab4eaedabda1ea5790e66b<\/code><\/li>\n<\/ul>\n<p>Pour que ce lien soit reconnu par le <em>bootstrap<\/em>, il doit \u00eatre sign\u00e9 d&rsquo;une autorit\u00e9 locale.<\/p>\n<p>A chaque fois que l&rsquo;on veut mettre \u00e0 jour l&rsquo;application, il faut n\u00e9buliser le nouveau code et g\u00e9n\u00e9rer un nouveau lien.<\/p>\n<p style=\"text-align: justify;\">Les diff\u00e9rentes classes de l&rsquo;application h\u00e9ritent de leurs classes parentes tout un tas de fonctions pr\u00e9par\u00e9es. Ces fonctions peuvent \u00eatre utilis\u00e9es par la nouvelle application, voire elles peuvent \u00eatre surcharg\u00e9es si besoin pour avoir un comportement particulier.<\/p>\n<h2 style=\"text-align: justify;\">Activer une application par d\u00e9faut<\/h2>\n<p style=\"text-align: justify;\">Lorsqu&rsquo;une application est fonctionnelle et reconnue par une autorit\u00e9 locale, il est possible de demander au <em>bootstrap<\/em> de charger par d\u00e9faut cette application.<\/p>\n<p style=\"text-align: justify;\">Soit par exemple l&rsquo;objet de r\u00e9f\u00e9rence de l&rsquo;application : <span style=\"color: #0000ff;\"><code>e5ce3e9938247402722233e4698cda4adb44bb2e01aa0687<\/code><\/span><\/p>\n<p style=\"text-align: justify;\">Ajouter ou modifier dans le fichier <code>nebule.env<\/code> l&rsquo;option :<br \/>\n<code>defaultApplication = e5ce3e9938247402722233e4698cda4adb44bb2e01aa0687<\/code><\/p>\n<p style=\"text-align: justify;\">La prise en compte se fait lors de la cr\u00e9ation d&rsquo;une nouvelle session sur le serveur, une session PHP. Pour v\u00e9rifier le bon fonctionnement, ajouter l&rsquo;argument <code>f<\/code> dans l&rsquo;URL.<\/p>\n<h2 style=\"text-align: justify;\">Activation\/d\u00e9sactivation d&rsquo;une application<\/h2>\n<p style=\"text-align: justify;\">L&rsquo;application 0 de s\u00e9lection des applications n&rsquo;affiche que les applications activ\u00e9es. Une v\u00e9rification est faite aussi au moment d&rsquo;afficher une application demand\u00e9e. L&rsquo;application <a title=\"option\" href=\"http:\/\/blog.nebule.org\/?page_id=2465\" target=\"_blank\" rel=\"noopener\">option<\/a> est la seule application activ\u00e9e par d\u00e9faut et non d\u00e9sactivable, elle est en liste blanche.<\/p>\n<p style=\"text-align: justify;\">Le mot cl\u00e9 utilis\u00e9 :<\/p>\n<p style=\"text-align: center;\"><code>nebule\/objet\/interface\/web\/php\/applications\/active<\/code><\/p>\n<p style=\"text-align: justify;\">L&rsquo;activation d&rsquo;une application se fait sur trois crit\u00e8res :<\/p>\n<ol>\n<li>C&rsquo;est l&rsquo;application par d\u00e9faut d\u00e9finit par l&rsquo;option <code>defaultApplication<\/code>, elle est par d\u00e9faut activ\u00e9e et non d\u00e9sactivable.<\/li>\n<li>C&rsquo;est une des applications en liste blanche. La liste blanche est une constante d\u00e9finie dans le <em>bootstrap<\/em> et dans la biblioth\u00e8que. Elleet non d\u00e9sactivable.<\/li>\n<li>L&rsquo;entit\u00e9 instance du serveur a activ\u00e9 explicitement l&rsquo;application par un lien.<\/li>\n<\/ol>\n<p style=\"text-align: justify;\">L&rsquo;entit\u00e9 ma\u00eetre du code <a title=\"bachue\" href=\"http:\/\/bachue.nebule.org\" target=\"_blank\" rel=\"noopener\">bachue<\/a> ne peut pas activer une application sauf \u00e0 modifier les constantes dans le code.<\/p>\n<p style=\"text-align: justify;\">Une application peut \u00eatre activ\u00e9e\/d\u00e9sactiv\u00e9e via l&rsquo;application <em>option<\/em>, la seule application aujourd&rsquo;hui en liste blanche. Il faut aller dans la partie des applications et il faut \u00eatre connect\u00e9 avec l&rsquo;instance entit\u00e9 du serveur.<\/p>\n<p style=\"text-align: center;\"><a href=\"\/wp-content\/uploads\/nebule\/2016\/11\/020161127-shot-2016-11-27_18-52-59.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-2841\" src=\"\/wp-content\/uploads\/nebule\/2016\/11\/020161127-shot-2016-11-27_18-52-59-600x335.png\" alt=\"020161127 shot-2016-11-27_18-52-59\" width=\"600\" height=\"335\" srcset=\"\/wp-content\/uploads\/nebule\/2016\/11\/020161127-shot-2016-11-27_18-52-59-600x335.png 600w, \/wp-content\/uploads\/nebule\/2016\/11\/020161127-shot-2016-11-27_18-52-59.png 932w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p>Le lien d&rsquo;activation d&rsquo;une application a la forme :<\/p>\n<ul>\n<li>action : <code>f<\/code><\/li>\n<li>source : objet de r\u00e9f\u00e9rence de l&rsquo;application, par exemple = <span style=\"color: #0000ff;\"><code>e5ce3e9938247402722233e4698cda4adb44bb2e01aa0687<\/code><\/span><\/li>\n<li>cible : objet de r\u00e9f\u00e9rence d&rsquo;activation = <code>e0e9ce893ea87b91f6e276b3839fed99f050168a0eb986354adc63abb3d7335c<\/code><\/li>\n<li>m\u00e9ta : objet de r\u00e9f\u00e9rence de l&rsquo;application, par exemple = <span style=\"color: #0000ff;\"><code>e5ce3e9938247402722233e4698cda4adb44bb2e01aa0687<\/code><code><br \/>\n<\/code><\/span><\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Pour que ce lien soit reconnu par le <em>bootstrap<\/em>, il doit \u00eatre sign\u00e9 de l&rsquo;entit\u00e9 instance du serveur, uniquement.<\/p>\n<p style=\"text-align: justify;\">La d\u00e9sactivation est un lien de type <code>x<\/code>.<\/p>\n<h2 style=\"text-align: justify;\">D\u00e9sactiver le pr\u00e9-chargement d&rsquo;une application<\/h2>\n<p style=\"text-align: justify;\">Le pr\u00e9-chargement des applications est syst\u00e9matiquement r\u00e9alis\u00e9 par le <em>bootstrap<\/em>. Cependant ce pr\u00e9-chargement qui se fait dans une page web interm\u00e9diaire et passag\u00e8re peut poser probl\u00e8mes pour certaines applications dans le cas d&rsquo;une indexation par les moteurs de recherches ou pour l&rsquo;\u00e9change inter-serveurs.<\/p>\n<p style=\"text-align: justify;\">Le mot cl\u00e9 utilis\u00e9 :<\/p>\n<p style=\"text-align: center;\"><code>nebule\/objet\/interface\/web\/php\/applications\/direct<\/code><\/p>\n<p style=\"text-align: justify;\">Il est possible de d\u00e9sactiver le pr\u00e9-chargement de l&rsquo;application en ajoutant le lien :<\/p>\n<ul>\n<li>action : <code>f<\/code><\/li>\n<li>source : objet de r\u00e9f\u00e9rence, par exemple = <span style=\"color: #0000ff;\"><code>e5ce3e9938247402722233e4698cda4adb44bb2e01aa0687<\/code><\/span><\/li>\n<li>cible : objet de r\u00e9f\u00e9rence de non pr\u00e9-chargement = <code>9d019716a5335ee1f3bad59cbb9cc93132b0726129b26b52d6441a66c7c59a8d<\/code><\/li>\n<li>m\u00e9ta : objet de r\u00e9f\u00e9rence, par exemple = <span style=\"color: #0000ff;\"><code>e5ce3e9938247402722233e4698cda4adb44bb2e01aa0687<\/code><\/span><code><br \/>\n<\/code><\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Pour que ce lien soit reconnu par le <em>bootstrap<\/em>, il doit \u00eatre sign\u00e9 d&rsquo;une autorit\u00e9 locale.<\/p>\n<h2 style=\"text-align: justify;\">Les modules dans l&rsquo;application<\/h2>\n<p style=\"text-align: justify;\">Les modules permettent de d\u00e9couper l&rsquo;application en de multiples parties pr\u00e9sentes ou optionnelles et activables au besoin. Cela donne beaucoup de souplesse pour des applications \u00e9tendues, elles deviennent modulaires.<\/p>\n<p style=\"text-align: justify;\">Un certains nombre de modules peuvent \u00eatre par d\u00e9faut int\u00e9gr\u00e9s dans l&rsquo;application m\u00eame (le m\u00eame objet). D&rsquo;autres peuvent \u00eatre optionnels et ne pas \u00eatre pr\u00e9sent par d\u00e9faut. Les modules optionnels peuvent \u00eatre synchronis\u00e9s plus tard et mise \u00e0 jours s\u00e9par\u00e9ment.<\/p>\n<p style=\"text-align: justify;\">Les modules ne sont pas activ\u00e9s par d\u00e9faut.<\/p>\n<h3 style=\"text-align: justify;\">Fonctionnement<\/h3>\n<p style=\"text-align: justify;\">Les modules peuvent \u00eatre de type :<\/p>\n<ul>\n<li>Application<\/li>\n<li>Traduction<\/li>\n<li>Skin (plus tard)<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Chaque module doit contenir certaines informations sur son fonctionnement ainsi que des m\u00e9thodes (programmes). Les modules doivent pour cela \u00eatre des extensions (extend) du module de r\u00e9f\u00e9rence <em>Modules<\/em> dans la librairie <em>nebule<\/em>. Ils ne sont pas pris en compte si ce n&rsquo;est pas le cas.<\/p>\n<h3 style=\"text-align: justify;\">Activer les modules<\/h3>\n<p style=\"text-align: justify;\">Pour activer la recherche et le chargement des modules dans l&rsquo;application, il faut surcharger dans la classe <em>Application<\/em> la variable :<\/p>\n<p style=\"text-align: justify; padding-left: 30px;\"><code>protected $_useModules = true;<\/code><\/p>\n<p style=\"text-align: justify;\">Le mot cl\u00e9 utilis\u00e9 :<\/p>\n<p style=\"text-align: center;\"><code>nebule\/objet\/interface\/web\/php\/applications\/modules<\/code><\/p>\n<h2 style=\"text-align: justify;\">Cr\u00e9er un nouveau module<\/h2>\n<p style=\"text-align: justify;\">La cr\u00e9ation d&rsquo;un module pour une application se fait en deux \u00e9tapes, le r\u00e9f\u00e9rencement et le code.<\/p>\n<p style=\"text-align: justify;\">Tout se fait dans l&rsquo;application <em>sylabe<\/em>. Un module sera cr\u00e9er pour faciliter ce travail&#8230;<\/p>\n<h3 style=\"text-align: justify;\">Le r\u00e9f\u00e9rencement<\/h3>\n<p style=\"text-align: justify;\">Cette partie est \u00e0 faire au d\u00e9but lorsque l&rsquo;on veut rendre visible et utiliser le nouveau module. Elle ne sera plus refaite par la suite. Le but est de permettre \u00e0 l&rsquo;application de trouver et d&rsquo;utiliser le module.<\/p>\n<p style=\"text-align: justify;\">&#8230;<\/p>\n<p>Pour que ces liens soient reconnus par\u00c2\u00a0l&rsquo;application, ils doivent tous \u00eatre sign\u00e9s d&rsquo;une autorit\u00e9 locale.<\/p>\n<h3 style=\"text-align: justify;\">Le code<\/h3>\n<p style=\"text-align: justify;\">La cr\u00e9ation de la base d&rsquo;un module est simple, il suffit de copier le mod\u00e8le de module dans un nouveau fichier et dans un premier temps d&rsquo;adapter les variables.<\/p>\n<p style=\"text-align: justify;\">&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Les applications d\u00e9velopp\u00e9es dans le cadre de nebule : bootstrap : le chargeur initial de la librairie et des applications. sylabe (blog ind\u00e9pendant) : l&rsquo;application de r\u00e9f\u00e9rence des possibilit\u00e9s de nebule. klicty (blog ind\u00e9pendant) : l&rsquo;application de partage d&rsquo;objets \u00e0 dur\u00e9e limit\u00e9e. messae (blog ind\u00e9pendant) : l&rsquo;application de gestion des conversations et messages. option : &hellip; <a href=\"http:\/\/blog.nebule.org\/?page_id=2460\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">Applications<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":4,"comment_status":"open","ping_status":"open","template":"","meta":[],"_links":{"self":[{"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/pages\/2460"}],"collection":[{"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2460"}],"version-history":[{"count":31,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/pages\/2460\/revisions"}],"predecessor-version":[{"id":3303,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/pages\/2460\/revisions\/3303"}],"wp:attachment":[{"href":"http:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2460"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}