<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:wfw="http://wellformedweb.org/CommentAPI/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:atom="http://www.w3.org/2005/Atom"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/">

    <channel>
        <title>Soosyze</title>
        <link>https://soosyze.com</link>
        <description>CMS open source, sans base de données pour créer votre site facilement</description>
        <lastBuildDate>Sat, 24 Jul 2021 19:27:00 +0200</lastBuildDate>
        <language>fr</language>
        <generator>Soosyze CMS</generator>
        
        <item>
            <title>Journal de développement Soosyze 2.0.0 billet 2</title>
            <link>https://soosyze.com/blog/2021/07/24/journal-de-developpement-soosyze-2-0-0-billet-2</link>
            <pubDate>Sat, 24 Jul 2021 19:27:00 +0200</pubDate>
            <description>&lt;p&gt;La transformation du code source à la version PHP7.2+ vient de se terminer et le développement de Soosyze continue 😊&lt;/p&gt;</description>
            <content:encoded><![CDATA[<div class="article_img">
                <img src="https://soosyze.com/public/files/default/node/article/83/image.jpg" alt="Picture">                </div>
                <div class="article_date_time">
                    24 juillet 2021                    -
                    ~3 minutes                </div>
                <p>La transformation du code source à la version php 7.2+ vient de se terminer et le développement de soosyze continue 😊</p>

<p>Toujours dans l'optique de nous concentrer sur les fonctionnalités du CMS, voici quelques changements majeurs.</p>

<h2>Utilisateur</h2>

<h3>Module Block</h3>

<p>Le module Block vient d'être réécrit pour améliorer son utilisation. Les différents formulaires sont disponibles via des fenêtres modales pour améliorer l'ajout, la modification et suppression des blocs.</p>

<p><img alt="Illustration block modal" class="img-thumbnail lazy"></p>

<p>La sélection des blocs est simplifiée à une liste qui chargera une preview.</p>

<p> <img alt="Illustration block preview" class="img-thumbnail lazy"></p>

<p><img alt="Illustration block preview avec contenu" class="img-thumbnail lazy"></p>

<p>La liste des blocs a été revue, le module complémentaire <a href="https://soosyze.com/download/module/blockextended">BlockeExtend</a> sera déprécié pour la version 2.0.0 de Soosyze CMS.</p>


<p>Blocs supprimés :</p>

<ul>
    <li>Bloc button,</li>
    <li>Bloc card_ui,</li>
    <li>Bloc gallery,</li>
    <li>Bloc three,</li>
    <li>Bloc peertube.</li>
</ul>

<p>Blocs ajoutés :</p>

<ul>
    <li>Bloc vidéo (qui remplacera le bloc Peertube),</li>
    <li>Bloc formulaire de contact,</li>
    <li>Bloc galerie (disponible en installant le module Gallery).</li>
</ul>

<p>Blocs modifiés :</p>

<ul>
    <li>Bloc carte/vidéo vous propose un champ pour insérer plus facilement le code d'intégration,</li>
    <li>Bloc derniers articles propose de nouvelles options,</li>
    <li>Bloc menu propose de nouvelles options.</li>
</ul>

<p>Le titre des blocs deviennent obligatoires mais, vous pouvez choisir de ne pas l'afficher sur votre site avec l'option "Afficher le titre"</p>

<p><img alt="Illustration titre obligatoire" class="img-thumbnail lazy"></p>

<h3>Module Node</h3>

<p>La méthode permettant de cloner un contenu est en train d'être réécrite pour améliorer sa maintenabilité et son évolution.</p>

<h2>Nouveau modules contributeurs</h2>

<p>Le catalogue des modules complémentaires reste assez léger, nous avons décidés de l'étoffer avec les modules suivants :</p>

<h3>Module Hcaptcha</h3>

<p>Nous voulions ajouter un captcha pour éviter le spam. Et comme pour le module Matomo, nous avons choisi de ne pas utiliser les services de Google.</p>

<p>Nous nous sommes donc penchés sur le service <a href="https://www.hcaptcha.com/">HCaptcha</a> pour l'intégrer sur les formulaires de connexion, de récupération de mots de passe et de contact.</p>

<p><img alt="Illustration hcaptcha dans formulaire de contact" class="img-thumbnail lazy"></p>

<h3>Module Redirect</h3>

<p>Pour faciliter la visibilité des redirections d'URLs, ce module sera disponible dans la page des outils.</p>

<p>Il fournit une interface listant les alias et leurs sources pour pouvoir centraliser leur modification.</p>

<p><img alt="Illustration module redirect" class="img-thumbnail lazy"></p>

<h3>Module Slideshow</h3>

<p>En plus des modules Gallery et FAQ, ce nouveau module apportera un nouveau type de contenu et un nouveau bloc pour ajouter un slideshow (carrousel en français).</p>

<h2>Développeur</h2>

<h3>Changements du Router</h3>

<p>Le router ne prendra plus en compte les URLs non réécrites.</p>

<p>Afin de gagner du temps dans la maintenance du CMS, celui ne prendra plus en compte les URLs du type ?q=my/router</p>

<p>Si vous utilisez un serveur Apache, vous devrez donc activer la réécriture d'URL.</p>

<h3>Changements du container d'injection de dépendance</h3>

<p>Le container simplifie son utilisation avec ce passage à la version PHP 7.2.</p>

<p>Il ne sera plus nécessaire de déclarer ses arguments s'il s'agit d'objet.</p>

<p>Vous pouvez également utiliser l'option call pour appeler une méthode à la déclaration d'un service.</p>

<h3>Nouvelles implémentations</h3>

<p>Le composant <a href="https://github.com/php-fig/http-client">HttpClient</a> et <a href="https://github.com/php-fig/http-factory">HttpFactories</a> implémentera les interfaces PSR.</p>

<p>Le composer Container est passé à la <a href="https://github.com/php-fig/container/tree/2.0.1">version 2 de l'interface PSR</a> pour imposer PHP 7+</p>

<h2>Mot de la fin</h2>

<p>Pour les plus impatients de suivre l'évolution du CMS, nous avons choisi d'utiliser les Milestones de github.</p>

<p>Il s'agit de la progression du développement d'une version en fonction de la liste de sa roadmap.</p>

<p><img alt="Illustration milestones" class="img-thumbnail lazy"></p>

<p>Vous pouvez la retrouver <a href="https://github.com/soosyze/soosyze/milestone/1">à cette adresse</a>.</p>

<p>De plus, d'autres modules complémentaires sont à l'étude, le but et de rendre le CMS plus modulable et offrir des points d'entrées pour simple à sa personnalisation.</p>

<p>Sur ce, nous vous souhaitons une bonne période estivale 🌄, nous reviendrons à la rentrée pour le prochain journal de développement.</p>
            ]]></content:encoded>
        </item>
        
        <item>
            <title>Vos retours sont importants</title>
            <link>https://soosyze.com/blog/2021/07/19/vos-retours-sont-importants</link>
            <pubDate>Mon, 19 Jul 2021 22:00:00 +0200</pubDate>
            <description>&lt;p&gt;Aujourd'hui nous avons eu une demande de résolution de bug dans notre forum concernant l'installation de Soosyze CMS 1.0.1&lt;/p&gt;&lt;p&gt;Vos retours sont importants et c'est d'autant plus important quand il s'agit de projets libres et open sources.&lt;/p&gt;</description>
            <content:encoded><![CDATA[<div class="article_img">
                <img src="https://soosyze.com/public/files/default/node/article/82/image.jpg" alt="Picture">                </div>
                <div class="article_date_time">
                    19 juillet 2021                    -
                    ~2 minutes                </div>
                <p>Aujourd'hui nous avons eu une demande de résolution de <a href="https://community.soosyze.com/d/55-pb-installation-du-cms-soosyze">bug dans notre forum</a> concernant l'installation de Soosyze CMS 1.0.1</p>

<p>Le bug était très simple, il manquait seulement une dépendance dans l'archive du CMS.</p>

<p>Nous nous investissons énormément dans ce projet mais, nous ne sommes jamais à l'abri d'une erreur.</p>

<p>Le problème étant, qu'entre le moment ou l'archive a été publié et le moment ou le bug a été remonté, il s'est écoulé 58 jours. Ça représente environ une cinquantaine de téléchargement du CMS en presque 2 mois.</p>

<p>Et il n'y a eu aucun retour nous informant qu'un bug majeur empêche son installation.</p>

<h2>Exemple de contribution</h2>

<p>En novembre 2020 nous avons découvert un bug dans le <a href="https://github.com/flarum-lang/french/issues/24">module d'analyse de trafic</a> de <strong>Flarum</strong>* (<i>*logiciel actuellement utilisé pour notre forum</i>).</p>

<p>Le module d'analyse ne pouvait pas être utilisé par <strong>Matamo</strong>* (<i>*outils d'analyse de trafic qui peut s'auto-heberge. Anciennement appelé Piwik</i>).</p>

<p>Matamo est utilisé par <a href="https://w3techs.com/technologies/details/ta-matomo">1% des sites</a>, alors que <strong>Google Analytics</strong>, lui est utilisé par <a href="https://w3techs.com/technologies/details/ta-googleanalytics">~56% de sites</a>.</p>

<p>Vu que nous voulons respecter l'anonymat de nos visiteurs et héberger nous même les données, nous tenons absolument à l'utiliser Matamo.</p>

<p>Je jette la pierre à personne, mais l’utilisation de Matamo représente une minorité des sites web et l'équipe en chargent de ce module n'a pas forcément pris le temps de le tester sur Matamo. Dans ce sens, nous les comprenons.</p>

<p>Si nous n'avions pas pris le temps de faire remonter le bug rapidement, les webmaster qui utilisent Flarum auraient eu plus de facilités à se tourner vers Google Analytics. Ça ne nous à pas coûté grand chose, seulement quelques minutes pour écrire un message à l'équipe concerné.</p>

<h2>Conclusion</h2>

<p>C'est pourquoi je me permets de rappeler que <strong>vos retours sont importants</strong> et de ne pas hésiter à les faire remonter.</p>

<p><strong>Et c'est d'autant plus important quand il s'agit de projets libres et open sources.</strong></p>

<h2>Mot de la fin</h2>

<p>Bref, nous tenons à remercier <a href="https://community.soosyze.com/u/christophe">@Christophe</a> un membre de notre communauté qui nous a averti dans la soirée.</p>

<p>Nous avons pu produire la <a href="https://github.com/soosyze/soosyze/releases/download/1.0.2/soosyze.zip">version 1.0.2</a> qui corrige ce bug.</p><div style="text-align: center;"><img alt="" width="" class=" lazy"></div>

<p>Si vous cherchez à nous joindre ou nous faire remonter de nouveaux bug, n'hésitez pas à passer sur notre <a href="https://community.soosyze.com/">forum</a>, notre serveur <a href="https://discord.gg/parFfTt">discord</a>ou encore <a href="https://mamot.fr/@soosyze">Mastodon</a>.</p>

<p>Nous vous accueillerons chaleureusement 😊<br></p><p><i>Spoil : le prochain billet de blog sur le développement de la version 2.0.0 sera disponible ce samedi 24 juillet.</i></p>
            ]]></content:encoded>
        </item>
        
        <item>
            <title>Journal de développement Soosyze 2.0.0 billet 1</title>
            <link>https://soosyze.com/blog/2021/05/16/journal-de-developpement-soosyze-2-0-0-billet-1</link>
            <pubDate>Sun, 16 May 2021 12:00:00 +0200</pubDate>
            <description>&lt;p&gt;Le développement de Soosyze 2.0.0 à commencer. Notre premier objectif est mise à jour du code sur des versions plus récentes de PHP.&lt;/p&gt;</description>
            <content:encoded><![CDATA[<div class="article_img">
                <img src="https://soosyze.com/public/files/default/node/article/81/image.jpg" alt="Picture">                </div>
                <div class="article_date_time">
                    16 mai 2021                    -
                    ~2 minutes                </div>
                <p>Si vous avez suivi les derniers journaux de développements, vous êtes au fait que la version 1.0.0 sortie récemment est une version LTS.</p>

<p>Ce qui signifie que cette version sera maintenue et corrigée au moins jusqu'en mars 2022.</p>

<p> L'objectif est d'avoir assez de temps pour le développement de la prochaine version majeure 😃</p>

<h2>Support de PHP 7.2+ uniquement</h2>

<p>En commençant le développement de Soosyze nous voulions un éventail le plus large possible pour le maintient des versions PHP, pour que les utilisateurs puissent adopter facilement notre outil.</p>

<p>Il y a plusieurs raisons à ça :</p>

<ul>
    <li>Nous avons moins de temps à nous consacrer au projet donc, nous préférons nous concentrer sur des versions plus récentes de PHP,</li>
    <li>L'équipe PHP ne support que <a href="https://www.php.net/supported-versions.php">la version 7.4+</a>,</li>
    <li>Ne pas se faire rattraper pas <a href="https://fr.wikipedia.org/wiki/Dette_technique">la dette technique</a>,</li>
    <li>La version 7.2 apport de <a href="https://www.php.net/manual/fr/migration72.new-features.php">nombreuses fonctionnalités</a> notamment une rigueur sur les types de données,</li>
    <li>Rendre le code plus compréhensible,</li>
    <li>Limiter la surface d'attaques car, les bugs critiques dans les anciennes versions PHP ne sont pas corrigées,</li>
    <li>Forcer les utilisateurs à migrer sur une version plus récente, <a href="http://www.phpbenchmarks.com/fr/comparator/php">plus rapide et moins gourmande en énergie</a> (pour les serveurs et les équipes de techniques ^^),</li>
    <li>L'utilisation de la version <a href="https://w3techs.com/technologies/history_details/pl-php">5 de PHP est en nette recule depuis des années</a>, tous les nouveaux projets commencent en 7+.</li>
</ul>

<p>Il ne s'agira pas seulement de bloquer l'utilisation des versions PHP inférieur, il s'agit bien d'une refonte de notre base de code.</p>

<p>La bibliothèque QueryFlatfile et Kses sont déjà opérationnelles en 7.2+ et nous sommes actuellement sur la migration du framework.</p>

<img alt="Queryflatfile version PHP 7.2+" class=" lazy">

<img alt="Kses version php7.2+" class=" lazy">

<p>Bref, Soosyze 1.0.0 fonctionnera toujours pour des versions PHP 5.5 à 7.4, mais la prochaine version majeure fonctionnera uniquement entre PHP 7.2 et 8+</p>

<p>N'hésitez pas à nous faire vos retours sur le forum ou nos réseaux si vous trouvez des bugs dans la version LTS ou si vous avez des questions 😊.</p>

            ]]></content:encoded>
        </item>
        
        <item>
            <title>Comment ingorer des fichiers localement et globalement dans un projet git ?</title>
            <link>https://soosyze.com/blog/2021/04/17/comment-ingorer-des-fichiers-localement-et-globalement-dans-un-projet-git</link>
            <pubDate>Sat, 17 Apr 2021 12:00:00 +0200</pubDate>
            <description>&lt;p&gt;Si vous êtes un utilisateur de git vous n’êtes pas sans savoir qu’il y a
 des fichiers et répertoires que vous ne souhaitez pas voir apparaitre 
dans les modifications de vos sources.&lt;/p&gt;&lt;p&gt;Mais saviez-vous qu’il y a plusieurs niveaux pour exclure des fichiers ? Je vous propose de revoir ces bases dans ce tutoriel 😃&lt;br&gt;&lt;/p&gt;</description>
            <content:encoded><![CDATA[<div class="article_img">
                <img src="https://soosyze.com/public/files/default/node/article/80/image.jpg" alt="Picture">                </div>
                <div class="article_date_time">
                    17 avril 2021                    -
                    ~4 minutes                </div>
                <p>Si vous êtes un utilisateur de git vous n’êtes pas sans savoir qu’il y a des fichiers et répertoires que vous ne souhaitez pas voir apparaitre dans les modifications de vos sources.<br></p>

<p>Par exemple les répertoires de vos dépendances comme :</p>

<ul>
    <li>
        <code>vendor</code> si vous utilisez <code>composer</code> en <code>PHP</code>,</li>
    <li>ou <code>node_module</code> si vous utilisez <code>npm</code> en <code>JS</code></li>
    <li>…</li>
</ul>

<p>Mais saviez-vous qu’il y a plusieurs niveaux pour exclure des fichiers ? Je vous propose de revoir ces bases dans ce tutoriel 😃</p>

<p>Pour info, ce tutoriel utilise l’éditeur GNU nano comme logiciel de traitement de texte, mais libre à vous de choisir votre éditeur préféré.</p>

<h2>Exclure des fichiers pour un seul référentiel</h2>

<p>Dans le cas où vous souhaitez <strong>ignorer des fichiers et répertoires d’un projet dans chacun de ses clones</strong>, utiliser un fichier <code>.gitignore</code> à la racine de votre projet. Il suffira de l’ajouter aux sources de son dépôt pour que la configuration soit appliquée.</p>

<ol>
    <li>Ouvrer Git Bash, puis exécuter les commandes suivantes :
        <pre><code>cd &lt;chemin_de_mon_projet&gt;
nano .gitingore
</code></pre>
        Remplacer <code>&lt;chemin_de_mon_projet&gt;</code> par le chemin réel de votre projet.</li>
    <li>Ajouter votre configuration,</li>
    <li>Enregistrer votre configuration (cf .Notes).</li></ol>

<h2>Exclure des fichier locaux sans créer ou modifier un fichier .gitignore</h2>

<p>Dans le cas où vous souhaitez <strong>ignorer des fichiers et répertoires d’un projet sans créer ou modifier fichier .gitignore</strong>, utiliser le fichier <code>exclude</code> dans le répertoire <code>.git/info</code> de votre projet.</p>

<ol>
    <li>
        Ouvrer Git Bash, puis exécuter les commandes suivantes :<pre><code>cd &lt;chemin_de_mon_projet&gt;
nano .git/info/exclude
</code></pre>
        Remplacer <code>&lt;chemin_de_mon_projet&gt;</code> par le chemin réel de votre projet.</li>
    <li>
        Dans votre terminale vous verrez apparaître le contenu suivant :<pre><code># git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
</code></pre>
    </li>
    <li>Ajouter votre configuration à la suite de ces lignes,</li>
    <li>Enregistrer votre configuration (cf .Notes).</li>
</ol>

<h2>Exclure des fichiers pour tous les référentiels de votre ordinateur</h2>

<p>Dans le cas où vous souhaitez <strong>ignorer des fichiers et répertoires dans tous vos projets</strong>, utiliser la configuration global <code>excludesFile</code>. Cette configuration est très pratique quand plusieurs développeurs travaillent sur plusieurs projets et qu’ils utilisent des IDE ou outils différents.</p>

<ol>
    <li>
        Ouvrer Git Bash, puis exécuter la commande suivante :
        <pre><code>nano ~/.gitignore_global</code></pre>
        Cette commande créée un fichier <code>.gitignore_global</code> dans votre répertoire utilisateur
    </li>
    <li>Ajouter votre configuration,</li>
    <li>Enregistrer votre configuration (cf .Notes).</li>
    <li>
        Exécuter la commande suivante pour ajouter le fichier <code>.gitignore_global</code> à votre configuration git :
        <pre><code>git config --global core.excludesfile ~/.gitignore_global
</code></pre>
    </li>
</ol>

<p>Vous pouvez retrouver cette configuration dans le fichier <code>.gitconfig</code> à la racine de votre répertoire utilisateur.</p>

<pre><code>nano ~/.gitconfig</code></pre>

<p>Apperçu de votre configuration git :</p>

<pre><code>[core]
    # Sous Windows
    excludesfile = C:/Users/&lt;nom_utilisateur&gt;/.gitignore_global
    # Sous Linux
    excludesfile = /home/&lt;nom_utilisateur&gt;/.gitignore_global
</code></pre>

<h2>Conclusion</h2>

<p>Pour résumer :</p>

<ul>
    <li><code>.gitignore</code> s’applique pour chaque clone d’un référentiel,</li>
    <li><code>.git/info/exclude</code> s’applique pour une instance d’un référentiel sans créer ou modifier un fichier <code>.gitignore</code></li>
    <li><code>excludesFile</code> s’applique sur tous référentiel sur votre ordinateur.</li>
</ul>

<p>Ce qu’il faut retenir :</p>

<ul>
    <li>Le fichier <code>.gitignore</code> n’a pas pour rôle de maintenir la liste de fichiers et répertoires générés par des IDE et outils,</li>
    <li>Si vous travailliez sur plusieurs projets avec plusieurs IDE et outils, utiliser <code>excludesFile</code> pour mutualiser les  fichiers et répertoires à ignorer.</li>
</ul>

<h2>Notes</h2>

<ul>
    <li>Documentation officielle de <a href="https://git-scm.com/docs/gitignore">.gitignore</a>,</li>
    <li>Créer des configurations exhaustifs à votre système d’exploitation, IDE ou outils :
        <ul>
            <li>Le site web <a href="https://www.toptal.com/developers/gitignore">https://www.toptal.com/developers/gitignore</a></li>
            <li>Le dépôt <a href="https://github.com/github/gitignore">https://github.com/github/gitignore</a></li>
        </ul>
    </li>
    <li>Pour enregistrer sous nano appuyer successivement sur les touches suivantes :
        <ul>
            <li><code>Ctrl + X</code> pour sauvegarder,</li>
            <li><code>o</code> si vous êtes sur Linux ou <code>Y</code> si vous êtes sur Windows pour confirmer la sauvegarde.</li>
            <li><code>Entrée</code> pour valider le nom du fichier d’enregistrement.</li>
        </ul>
    </li></ul>
            ]]></content:encoded>
        </item>
        
        <item>
            <title>Sortie de Soosyze 1.0.0</title>
            <link>https://soosyze.com/blog/2021/03/19/sortie-de-soosyze-1-0-0</link>
            <pubDate>Sat, 20 Mar 2021 12:00:00 +0100</pubDate>
            <description>&lt;p&gt;Après 2 ans, 6 mois et 4 jours de développement, la version de &lt;span class=&quot;spellver&quot; title=&quot;Sosie, Shootiez, Sosies, Solstice, Zoopsie, Sodomise, Sodomisé, Sonorise, Sonorisé, Zoophyte, Sottise, Solmise, Solmisé, Zooïde, Rosisse, Zoonose, Zoopsies, Sursise, Zoolite, Sauciez&quot;&gt;Soosyze&lt;/span&gt; &lt;span class=&quot;spellver&quot; title=&quot;CM, MS, RMS, CAS, CES&quot;&gt;CMS&lt;/span&gt; version stable 1.0.0 &lt;span class=&quot;spellver&quot; title=&quot;&quot;&gt;LTS&lt;/span&gt; est sortie 🥳&lt;br&gt;&lt;/p&gt;</description>
            <content:encoded><![CDATA[<div class="article_img">
                <img src="https://soosyze.com/public/files/default/node/article/78/image.png" alt="Picture">                </div>
                <div class="article_date_time">
                    20 mars 2021                    -
                    ~7 minutes                </div>
                <p>2 ans, 6 mois et 4 jours. C'est le temps qu'il a fallu entre la première version de Soosyze et sa version stable.</p>

<p>Il faut dire que nous avons fait le choix de tous recréer de A à Z et ceux pour 2 raisons</p>

<ul>
    <li>Apprendre à concevoir un logiciel dans son intégralité,</li>
    <li>Réduire au maximum les dépendances et la lourdeur du code.</li>
</ul>

<p>Donc, forcement il a fallu beaucoup de temps avant qu'une première version stable puisse voir le jour.</p>

<p>Si vous vous dites que deux ans et demi c'est beaucoup, je vous donne quelques points de comparaisons</p>

<ul>
<li>Le forum (Flarum) qui a été développé par le créateur de FluxBB 
est en développement depuis 7 ans et c'est sa 16ème bêta</li>
<li>Pitivi qui est un logiciel de montage vidéo pour GNOME à sortie sa 
version 1.0 le 30 septembre dernier au bout de 16 ans de développement.</li>
<li>Inkscape, l'un des concurrent libre et open source d'illustrator à 
atteint sa version 1.0 il y a quelques mois. Il a fallut 20 ans de 
développement.</li></ul><p>Bref, nous vous laissons découvrir l'ensemble des nouveauté pour l'utilisateur et pour les développeurs dans cet article 
    et vous pouvez également tester en ligne ces nouveautés directement sur la <a href="https://demo.soosyze.com/">version de démonstration</a>.</p>

<h2>Utilisateur</h2>

<h3>Block</h3>

<p>Améliore la sélection de blocs.</p>

<p style="text-align: center;"><img alt="block_selection" class="img-thumbnail lazy"></p>

<p>Ajout d'un message d'avertissement en cas d'absence de contenu pour un bloc.</p>

<div style="text-align: center;"><img alt="block_absence_de_contenu" class="img-thumbnail lazy"></div>

<h3>Dashboard</h3>

<p>#219 Ajout du tableau phpinfo dans les informations complémentaires du dashboard.</p>

<div style="text-align: center;"><img alt="dashboard_phpinfo" class="img-thumbnail lazy"></div>

<h3>Filemanager</h3>

<p>#202 Ajout d'un champ de recherche pour le Filemanager. (uniquement pour les fichiers du répertoire courant), les termes recherchés utilisent également la surbrillance.</p>

<div style="text-align: center;"><img alt="filemanager_search" class="img-thumbnail lazy"></div>

<p>#206 Téléchargement multiple dans le module FileManager.</p>

<div style="text-align: center;"><img alt="filemanager_upload" class="img-thumbnail lazy"></div>

<p>#217 Ajout de l'action déplacer ou copier dans le module Filemanager.</p>

<div style="text-align: center;"><img alt="filemanager_copy_or_deplace" class="img-thumbnail lazy"></div>

<p>Nouvelle configuration pour la copie du lien de fichier.</p>

<div style="text-align: center;"><img alt="filemanager_config_copy_link" class="img-thumbnail lazy"></div>

<p>#225 Ajout d'un sous menu pour les pages de permission de fichier.</p>

<img alt="filemanager_submenu" class="img-thumbnail lazy">

<h3>Menu</h3>

<p>#232 Refonte de l'interface de gestion des menus.</p>

<div style="text-align: center;"><img alt="menu_manager" class="img-thumbnail lazy"></div>

<p>#205 Ajout de l'option Lien parent au bloc de menu.</p>

<div style="text-align: center;"><img alt="menu_block_parent" class="img-thumbnail lazy"></div>

<h3>News</h3>

<p>#211 Nouveau bloc de sélection pour les archives des news.</p>

<div style="text-align: center;"><img alt="news_block_archive_select" class="img-thumbnail lazy"></div>

<p>#209 Refonte du bloc des archives des news.</p>

<p>Le bloc des archives des news ont été revus. Au lieu d'avoir 2 blocs distincts, vous n'aurez plus qu'un bloc avec des configurations pour afficher ou non les mois dépliés.

</p><p>Ces
    nouvelles configurations ajoutent un peu de performance au chargement 
    puisque les mois ne sont plus obligés d'être calculés par défaut</p>

<div style="text-align: center;"><img alt="news_block_archive" class="img-thumbnail lazy"></div>

<p>Vous pouvez quand même afficher tous les mois grâce à sa nouvelle configuration :</p>

<div style="text-align: center;"><img alt="news_block_archive_settings" class="img-thumbnail lazy"></div>

<p>#223 Ajout d'une configuration pour le titre du blog.</p>

<div style="text-align: center;"><img alt="news_config_title" class="img-thumbnail lazy"></div>

<h3>Node</h3>

<p>Les types de contenus sont séparés du titre pour pouvoir le trier.</p>

<div style="text-align: center;"><img alt="node_admin" class="img-thumbnail lazy"></div>

<p>#226 Un contenu peut être possédé par un utilisateur.</p>

<p style="text-align: center;"><img alt="node_edit_user" class="img-thumbnail lazy"></p>

<p>L'affichage de l'utilisateur dans les articles :</p>

<p style="text-align: center;"><img alt="node_show_user" class="img-thumbnail lazy"></p>

<p>L'affichage des contenus sur la page de l'utilisateur :</p>

<p style="text-align: center;"><img alt="node_profile_user" class="img-thumbnail lazy"></p>

<p>Les nouvelles permissions des contenus des utilisateurs :</p>

<p style="text-align: center;"><img alt="node_user_permission" class="img-thumbnail lazy"></p>

<p>La suppression de contenu a été revue, vous pouvez choisir de ne pas supprimer le répertoire de fichier.</p>

<p>De plus, si un contenu est utilisé par la configuration, un message vous avertira et vous proposera de corriger le problème avant la suppression.</p>

<div style="text-align: center;"><img alt="node_delete" class="img-thumbnail lazy"></div>

<p>#192 Ajout du formulaire de suppression dans une fenêtre modale.</p>

<div style="text-align: center;"><img alt="node_delete_modal" class="img-thumbnail lazy"></div>

<p>#207 L'utilisateur pourra choisir le menu à la création d'un contenu.</p>

<div style="text-align: center;"><img alt="node_edit_menu" class="img-thumbnail lazy"></div>

<p>#208 Ajout d'un nouveau bloc de navigation avec des liens suivant/précédent.</p>

<div style="text-align: center;"><img alt="node_block_next_previous" class="img-thumbnail lazy"></div>

<p>Vous allez pouvoir créer des blocs pour tous les types de contenus et personnaliser leurs affichages.</p>

<div style="text-align: center;"><img alt="node_block_next_previous_settings" class="img-thumbnail lazy"></div>

<p>#231 Ajout des balises OpenGraph aux contenus.</p>

<div style="text-align: center;"><img alt="node_og" class="img-thumbnail lazy"></div>

<p>Simplification de la date de publication des contenus.</p>

<div style="text-align: center;"><img alt="node_publication" class="img-thumbnail lazy"></div>

<h3>System</h3>

<p>Ajout d'un message d'avertissement si les URLs ne peuvent pas être réécrites.</p>

<div style="text-align: center;"><img alt="system_url_propre" class="img-thumbnail lazy"></div>

<p>Utilisateur de PHPMailer</p>

<p>L'ajout de PHPMailer a de nombreux avantages (sécurité, polyvalence…) mais a 
    également de gros défauts comme la taille de ses sources. Il pèse au bas mot autant voir un peu plus que notre framework.</p>

<div style="text-align: center;"><img alt="system_smtp" class="img-thumbnail lazy"></div>

<p>#203 Ajout d'une liste de sélection des routes par API.</p>

<div style="text-align: center;"><img alt="system_route_api" class="img-thumbnail lazy"></div>

<p>#214 Refonte de l'interface d'installation.</p>

<ul>
    <li>Le formulaire du choix des langues et de la timezone comme 1er étape d'installation.</li>
    <li>La bibliothèque SoosyzeCSS avec le thème dark,</li>
    <li>Les étapes d'installation deviennent cliquables pour revenir en arrière.</li>
    <li>Des icônes ont été ajoutées au bouton suivant,</li>
    <li>Des icônes de validation des étapes précédentes,</li>
    <li>Le titre de la page prend en compte le titre de l'étape,</li>
    <li>Un repositionnement du bas de page,</li>
    <li>Un repositionnement du titre et de l'icône Soosyze.</li>
</ul>

<img alt="install_step_2" class="img-thumbnail lazy">

<p>Nouvelle interface pour les thèmes</p>

<p>Les informations et données des thèmes dans la configuration sont 
    supprimées (logo, favicon, le thème dark d'administration) et déplacer dans la nouvelle interface.</p>

<div style="text-align: center;">
    <img alt="theme_manager" class="img-thumbnail lazy">
</div>

<div style="text-align: center;">
    <img alt="theme_config" class="img-thumbnail lazy">
</div>

<p>#229 Sépare les outils dans une interface dédiée.</p>

<p>Pour éviter que le menu principal du thème d'administration déborde de liens,</p>

<p>nous avons créer une nouvelle interface qui accueillera les outils pour Soosyze CMS.</p>

<div style="text-align: center;"><img alt="system_tool_manager" class="img-thumbnail lazy"></div>

<p>Par exemple le module de backup ne sera plus présent dans le menu principal, mais dans la page des outils.</p>

<h3>Trumbowyg</h3>

<p>Ajout d'action de manipulation de table pour trumbowyg.</p>

<div style="text-align: center;"><img alt="trumbowyg_table" class="img-thumbnail lazy"></div>

<h3>User</h3>

<p>Une surbrillance dans la recherche des permissions.</p>

<div style="text-align: center;"><img alt="user_manager" class="img-thumbnail lazy"></div>

<p>Une surbrillance dans la recherche des permissions.</p>

<div style="text-align: center;"><img alt="user_permission" class="img-thumbnail lazy"></div>

<p>Ajout de la variable :id_user au champ de configuration « Page de redirection après connexion »</p>

<div style="text-align: center;"><img alt="user_config_id_user" class="img-thumbnail lazy"></div>

<p>ajout d'un bloc de connexion utilisateur.</p>

<div style="text-align: center;"><img alt="user_login" class="img-thumbnail lazy"></div>

<p>#224 Ajout d'un sous menu pour les pages de rôle.</p>

<div style="text-align: center;"><img alt="user_role_submenu" class="img-thumbnail lazy"></div>

<h2>Développeur</h2>

<h3>Soosyze CSS</h3>

<ul><li>#215 Ajout d'un composant Dropdown à Soosyze CSS.</li></ul>

<h3>Framework</h3>

<ul>
    <li>#201 Fin du support PHP 5.4</li>
    <li>Nous avons également commencé le développement de Soosyze framework 3 avec :
        <ul>
            <li>Suppression du composant Email,</li>
            <li>Fin de son support PHP 5.4,</li>
            <li>Nouveau composant HttpClient pour des échanges entre serveurs,</li>
            <li>Plusieurs petites corrections.</li>
        </ul>
    </li>
    <li>#221 Changement de format pour le chargement des services.</li>
</ul>

<h3>CMS</h3>

<ul>
    <li>Update, mise à jour de l'Apache Server Configs v4.1.0</li>
    <li>Mise à jour de la bibliothèque Queryflatfile 1.4.0</li>
    <li>#196 Ajout d'une fonction de surbrillance à Soosyze JS.</li>
    <li>#200 Utilisation de la bibliothèque PHPMailer.</li>
    <li>#198 Utiliser plusieurs fichiers de configurations.</li>
    <li>Ajout de la couleur dans les données de types de contenus.</li>
    <li>#220 Séparation des hooks dans un répertoire dédié.</li>
    <li>#218 Refonte de l'installation des thèmes et modules.</li>
    <li>#234 Simplification de l'ajout d'assets CSS et JS pour les modules.</li>
    <li>#235 Ajout d'un callback pour la migration de configurations.</li>
    <li>#233 Factorisation des éléments triables.</li>
    <li>#229 Sépare les outils dans une interface dédiée.</li>
    <li>#230 Utilisation d'interface pour les hooks les plus utilisés.</li>
    <li>#228 Bloque par défaut les accès aux routes non déclarées dans les permissions.</li>
    <li>#227 S'assurer de la bonne suppression des dépendances à la suppression d'un type de contenu.</li>
    <li>Utilisation des nouvelles fonctions du composant Template.</li>
</ul>

<h2>Mot de la fin</h2>

<p>Cette version apporte de nombreuses fonctionnalités mais, il s'agit surtout de petites touches qui visent à améliorer son utilisation.</p>

<p>Notre développement c'est concentré sur l'architecture du CMS pour assurer sa stabilité.</p>

<p>Pour le moment il n'y a pas encore la possibilité de mettre à jour automatiquement le CMS, 
    comme nous en avons parlé précédemment il faut d'abord modifier la plateforme qui accueille les modules, thèmes et le projet. Ce qui prendra un certain temps.</p>

<p>Mais je vous rassure cette évolution est une priorité.</p>

<p>Le prochain gros chantier qui nous attend est la mise à jour de la documentation développeur pour les modules, mais surtout la création d'une documentation pour les thèmes.</p>

<p>En attendant, vous pouvez nous retrouver sur le <a href="https://community.soosyze.com/d/53-sortie-de-soosyze-100">Forum</a>, <a href="https://discord.gg/parFfTt">Discord</a> ou <a href="https://mamot.fr/@soosyze">Mastodon</a> et n'hésitez pas à nous faire remonter d'éventuels bugs 😀<br></p>
            ]]></content:encoded>
        </item>
        
        <item>
            <title>Journal de développement 1.0.0 billet 5</title>
            <link>https://soosyze.com/blog/2021/03/06/journal-de-developpement-1-0-0-billet-5</link>
            <pubDate>Sun, 07 Mar 2021 12:00:00 +0100</pubDate>
            <description>&lt;p&gt;Bonjour la communauté 😃 j'espère que vous allez bien.&lt;/p&gt;

&lt;p&gt;Le printemps et les beaux jours arrivent à grands pas, la sortie de Soosyze CMS 1.0.0 aussi ^^.&lt;/p&gt;

&lt;p&gt;Aujourd'hui nous allons revenir sur le développement de Soosyze CMS. Nous aurions dû écrire ce billet pour le 16 janvier, mais nous manquions cruellement de temps ces derniers jours.&lt;/p&gt;</description>
            <content:encoded><![CDATA[<div class="article_img">
                <img src="https://soosyze.com/public/files/default/node/article/77/image.jpg" alt="Picture">                </div>
                <div class="article_date_time">
                    07 mars 2021                    -
                    ~7 minutes                </div>
                <p>Bonjour la communauté 😃 j'espère que vous allez bien.</p>

<p>Le printemps et les beaux jours arrivent à grands pas, la sortie de Soosyze CMS 1.0.0 aussi ^^.</p>

<p>Aujourd'hui nous allons revenir sur le développement de Soosyze CMS. Nous aurions dû écrire ce billet pour le 16 janvier, mais nous manquions cruellement de temps ces derniers jours.</p>

<h2>Nouveau projet professionnel</h2>

<p>Je vais vous parler rapidement et sans trop entrer dans les détails, mais j'ai changé d'entreprise en début d'année.</p>

<p>De mi-janvier à mi-février j'ai passé :</p>

<ul>
    <li>Des entretiens RH + manager,</li>
    <li>Des tests (QCM + logique),</li>
    <li>Des entretiens clients + techniques.</li>
</ul>

<p>Cela a été sportif car, il faut passer 4 à 5 entretiens par entreprises et pour la moitié d'entre elles j'ai dû remplir des dossiers de compétences. C'est comme le CV que tu envois, mais avec le format de l'entreprise où tu postules.</p>

<p>Comme j'ai postulé pour 6 entreprises il fallait que je m'organise pour assurer toutes les échéances et donc stopper pendant un temps le développement de Soosyze CMS.</p>

<h2>Utilisateur</h2>

<h3>Séparer les outils dans une interface dédiée.</h3>

<p>Pour éviter que le menu d'administration déborde de liens, les différents outils seront affichés dans une page dédiée.</p>

<p>Cette page et dépendante du cœur du CMS puisqu'elle portera les actions essentielles du CMS (mise à jour des traductions, exécution de la tâche cron, vider les caches...).</p>

<p>Le module BackupManager devient un outil.</p>

<div style="text-align: center;"><img></div>

<h3>Ajout des balises OpenGraph aux contenus.</h3>

<p>L'ajout des balises OpenGraph va améliorer le référencement de vos contenus et améliorer le partage de lien de votre site.</p>

<p>Voici un exemple de rendu lors d'un partage de lien avec Discrod :</p>

<div style="text-align: center;"><img alt="Illustration OpenGraph" class="img-thumbnail lazy"></div>

<h3>Refonte de l'interface de gestion des menus.</h3>

<p>Ce n'était pas prévu à la base, mais nous avons trouvé une façon d'améliorer l'interface graphique des menus et nous l'avons implémenté pour la prochaine version.</p>

<div style="text-align: center;"><img alt="Illustration gestionnaire des menus" class="img-thumbnail lazy"></div>

<h3>Simplification de la date de publication des contenus.</h3>

<p>La date de publication s'inscrivait dans un seul champ, obligeant l'utilisateur à utiliser une syntaxe stricte.</p>

<p>Désormais la date est séparée dans 2 champs, l'un pour le format du jour et l'autre pour le format de l'heure.</p>

<div style="text-align: center;"><img alt="Illustration champ publication" class="img-thumbnail lazy"></div>

<h2>Développeur</h2>

<p>Le gros du travail pour la version 1.0.0 ce concentre sur la structure du CMS. Le but est de rendre son architecture le plus propre possible pour les années à venir.</p>

<h3>Interface pour les hooks les plus utilisés</h3>

<p>Lorsqu'un module souhaite étendre ses fonctionnalités à d'autre module il utilise les hooks.</p>

<p>Cependant, certaines fonctionnalités sont plus utilisées que d'autres et nécessitent d'être standardisées avec des interfaces :</p>

<ul>
    <li><code>BlockInterface</code>, pour la création de blocs dans le thème,</li>
    <li><code>ConfigInterface</code>, pour l'ajout d'une page dans les configurations,</li>
    <li><code>UserInterface</code>, pour l'ajout de permissions utilisateur,</li>
    <li><code>ToolInterface</code>, pour l'ajout d'outils.</li>
</ul>

<p>Le but est de simplifier le développement de modules contributeurs et d'utiliser l'inversion de contrôle.</p>

<p>Les interfaces sont placées à la racine des modules.</p>

<h3>Factorisation des éléments triables.</h3>

<p>Le CMS prend à sa charge les éléments triables utilisant la bibliothèque Sortable.js</p>

<p>Les éléments suivants ont été factorisés :</p>

<ul>
    <li>Les rôles utilisateurs,</li>
    <li>Les permissions de fichiers,</li>
    <li>Les sections des thèmes,</li>
    <li>Les entités des contenus,</li>
    <li>Les menus.</li>
</ul>

<p><a href="https://github.com/soosyze/soosyze/issues/233">Pour plus d'informations</a></p>

<h3>Simplification de l'ajout d'assets CSS et JS pour les modules.</h3>

<p>Pour simplifier l'ajout d'assets CSS et JS dans les modules, le service Template fournit les méthodes suivantes :</p>

<ul>
    <li><code>addScript($name, $script)</code>, ajout d'un script js,</li>
    <li><code>addStyle($name, $style)</code>, ajout d'une feuille de style,</li>
    <li><code>addConfigJs($name, $value)</code>, transmet des valeurs du back-end au front-end,</li>
    <li><code>setStylesGlobal($styles)</code>, pour l'ajout de bibliothèques globales (normalize, fontawesome...)</li>
    <li><code>setScriptsGlobal($scritps)</code>, pour l'ajout de bibliothèques globales (jquery, sortable...)</li>
</ul>

<p>Les configurations sont exploitables via l'objet JS config.</p>

<p>Jusqu'à présent le CMS utilise des CDN pour l'import des scripts globaux. Afin d'améliorer l'indépendance et la sécurité du CMS, ceux-ci sont importés dans le répertoire public/vendor.</p>

<p>Vous pouvez a tous moment réutiliser les CDN en modifiant le fichier bootstrap/template.php et remplacer les chemins internes par des URLs de CDN.</p>

<h3>Ajout d'un callback pour la migration de configurations</h3>

<p>Puisque les configurations sont gérées à partir de fichier, la nouvelle clé up_config permet de déclarer une fonction anonyme avec le service de configuration en paramètre pour la mettre à jour.</p>

<p>Exemple d'une migration de configurations :</p>

<pre><code>&lt;?php
use Soosyze\Config;

return [
    'up_config' =&gt; function (Config $config) {
        $config-&gt;set('settings.new_value', 'Value');
    }
];</code></pre>

<h3>Nouvelle fonction contre les attaques XSS.</h3>

<p>Voilà un point sans lequel nous n'aurions pas pu sortir une version stable.</p>

<p>Les attaques XSS représentent la large majorité des problèmes de sécurité dans les projets PHP.</p>

<p>Pour palier à ce problème vous avons re-développé la bibliothèque KSES durant notre dernière realese, mais nous manquions de temps pour l'implémenter dans le CMS.</p>

<p>Depuis elle est disponible, il vous suffira d'utiliser la fonction <code>xss(string $str);</code> pour utiliser KSES dans Soosyze CMS.</p>

<h3>Mise à jour de la bibliothèque Queryflatfile</h3>

<p>Ce n'était pas prévu non plus, mais après avoir réalisé des tests en important 1000 articles dans le CMS nous voulions améliorer le temps de calcule des données pour réduire le délai d'attente des pages.</p>

<p>Nous avons donc retravaillé sur la bibliothèque QueryFlatfile et simplifié un certain nombre d'opérations gagnant 10 à 20% de performance sur certaines opérations :).</p>

<p>De plus, nous avons ajouté le nouveau driver `Igbinary`, il permet la lecture écriture de vos données dans un format binaire pour une meilleure performance.</p>

<p>Queryflatfile à déjà le driver binaire `MsgPack` qui est plus performant que le driver par défaut, mais pas assez performant pour de gros sites.</p>

<p>Pour vous donner un exemple concret, pour 1000 articles :</p>

<ul>
    <li>Avec le driver JSON nous avons 2.2Mo de données, 5.9Mo de mémoire et un temps de chargement ~150ms par page.</li>
    <li>Avec le driver MsgPack nous avons 1.8Mo de données, 3.4Mo de mémoire et un temps de chargement ~110ms par page.</li>
    <li>Avec le driver Igbinary nous passons à 180ko de données, 2.2Mo de mémoire et un temps de chargement de ~80ms par page.</li>
</ul>

<p>Si vous avez un gros site/blog ou que souhaitez avoir un site performant et qui consomme le moins possible, ce nouveau format et indispensable.</p>

<p>L'inconvénient c'est qu'il faut les extensions `msgpack` ou `igbinary` d'installées sur votre serveur.</p>

<p>Et autant vous dire que pour les hébergeurs gratuits ou mutualisés vous ne l'aurait pas 😢</p>

<h2>Soosyze 1.0.0 LTS</h2>

<p>Et bien nous y sommes presque.</p>

<p>Dans le dernier billet de développement, je vous avais parlé des changements qui s'opèreront pendant février/mars (mon changement d'entreprise).</p>

<p>Et comme ce nouveau travail est prioritaire, le temps que je passerais sur Soosyze va être réduit.</p>

<p>Je vous avais également parlé d'un sondage sur un éventuel report pour la sortie de Soosyze LTS, mais après mûre réflexion il n'y aura pas de report.</p>

<p>Et Soosyze dans tout ça ? Et bien l'aventure Soosyze continue.</p>

<p>J'aurais bien moins de temps à investir, mais le développement continue et si  tout se passe bien la version 1.0.0 sortira le week-end du 20/21 mars 2021.</p>

<h2>Mot de la fin</h2>

<p>Nous avons fait un test d'archive pour la prochaine version de Soosyze et l'intégration des bibliothèques JS/CSS + PHPMailer + KSES à presque fait doubler la taille du CMS.</p>

<p>Même si nous mettons l'accent sur la réduction de code, nous nous rendons compte que fournir un outil sécurisé ne se fera pas sans quelques sacrifices.</p>

<p>Les explications pour la migration sur la nouvelle version seront écrites une semaine après, donc pensez bien à attendre avant de mettre votre site à jour.</p>

<p>La prochaine version du site sera autour de 1Mo compressé au lieu de 650ko.</p>

<p>Vous pouvez néanmoins supprimer les bibliothèques JS/CSS internes en lès remplacement par les CDN afin de réduire la taille des fichiers sur votre serveur à tous moment 🙃</p>
            ]]></content:encoded>
        </item>
        
    </channel>
</rss>