Recherche avancée

Médias (0)

Mot : - Tags -/diogene

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (47)

  • Les autorisations surchargées par les plugins

    27 avril 2010, par

    Mediaspip core
    autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs

  • Le plugin : Podcasts.

    14 juillet 2010, par

    Le problème du podcasting est à nouveau un problème révélateur de la normalisation des transports de données sur Internet.
    Deux formats intéressants existent : Celui développé par Apple, très axé sur l’utilisation d’iTunes dont la SPEC est ici ; Le format "Media RSS Module" qui est plus "libre" notamment soutenu par Yahoo et le logiciel Miro ;
    Types de fichiers supportés dans les flux
    Le format d’Apple n’autorise que les formats suivants dans ses flux : .mp3 audio/mpeg .m4a audio/x-m4a .mp4 (...)

  • Organiser par catégorie

    17 mai 2013, par

    Dans MédiaSPIP, une rubrique a 2 noms : catégorie et rubrique.
    Les différents documents stockés dans MédiaSPIP peuvent être rangés dans différentes catégories. On peut créer une catégorie en cliquant sur "publier une catégorie" dans le menu publier en haut à droite ( après authentification ). Une catégorie peut être rangée dans une autre catégorie aussi ce qui fait qu’on peut construire une arborescence de catégories.
    Lors de la publication prochaine d’un document, la nouvelle catégorie créée sera proposée (...)

Sur d’autres sites (6373)

  • Roadmap #3844 : Gérer la parenté dans la déclaration d’un objet éditorial.

    14 mars 2018, par RastaPopoulos ♥

    Ok, j’avance dans ma réflexion.

    Cas simple où le type du parent est connu d’avance

    1. <span class="CodeRay"><span class="string"><span class="delimiter">'</span><span class="content">parent</span><span class="delimiter">'</span></span> => <span class="predefined">array</span>(<span class="string"><span class="delimiter">'</span><span class="content">type</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">rubrique</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">champ</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">id_rubrique</span><span class="delimiter">'</span></span>)
    2. </span>

    Télécharger

    Proposition pour le cas où le type est variable

    1. <span class="CodeRay"><span class="string"><span class="delimiter">'</span><span class="content">parent</span><span class="delimiter">'</span></span> => <span class="predefined">array</span>(<span class="string"><span class="delimiter">'</span><span class="content">champ_type</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">objet</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">champ</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">id_objet</span><span class="delimiter">'</span></span>)
    2. </span>

    Télécharger

    Proposition pour le cas complexe où le parent dépend de conditions ! Exemple : les forums

    1. <span class="CodeRay"><span class="string"><span class="delimiter">'</span><span class="content">parent</span><span class="delimiter">'</span></span> => <span class="predefined">array</span>(
    2.     <span class="predefined">array</span>(<span class="string"><span class="delimiter">'</span><span class="content">condition</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">id_parent=0</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">champ_type</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">objet</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">champ</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">id_objet</span><span class="delimiter">'</span></span>),
    3.     <span class="predefined">array</span>(<span class="string"><span class="delimiter">'</span><span class="content">condition</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">id_parent>0</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">type</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">forum</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">champ</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">id_parent</span><span class="delimiter">'</span></span>)
    4. )
    5. </span>

    Télécharger

    Au vu de la dernière proposition, je me demande si le parent ne devrait pas toujours être un tableau de tableaux, même quand il n’y a qu’un seul cas.

    Cela éviterait de devoir tester plusieurs cas possible, dans les utilisations, on ferait donc toujours un "foreach" sur les parents. Et s’il n’y en a qu’un bah c’est tout, ça ne bouclera qu’une fois.

    Ça ne me parait pas déconnant sachant qu’on utilise déjà ce principe pour la déclaration des statuts. Dans l’immense majorité des cas, il n’y a qu’un seul champ de statut, et pourtant c’est toujours un tableau de tableaux, car parfois ça peut être plus complexe.

    1. <span class="CodeRay"><span class="string"><span class="delimiter">'</span><span class="content">statut</span><span class="delimiter">'</span></span> => <span class="predefined">array</span>(
    2.     <span class="predefined">array</span>( ’champ’ => ’statut’, ’publie’ => ’publie’, ’previsu’ => ’publie,prop,prepa’, ’post_date’ =>date, ’exception’ => ’statut’)
    3. )
    4. </span>

    Télécharger

    On reprendrait donc ce même principe et on aurait donc :

    1. <span class="CodeRay"><span class="string"><span class="delimiter">'</span><span class="content">parent</span><span class="delimiter">'</span></span> => <span class="predefined">array</span>(
    2.     <span class="predefined">array</span>(<span class="string"><span class="delimiter">'</span><span class="content">type</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">rubrique</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">champ</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">id_rubrique</span><span class="delimiter">'</span></span>),
    3. )
    4. <span class="string"><span class="delimiter">'</span><span class="content">parent</span><span class="delimiter">'</span></span> => <span class="predefined">array</span>(
    5.     <span class="predefined">array</span>(<span class="string"><span class="delimiter">'</span><span class="content">champ_type</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">objet</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">champ</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">id_objet</span><span class="delimiter">'</span></span>),
    6. )
    7. <span class="string"><span class="delimiter">'</span><span class="content">parent</span><span class="delimiter">'</span></span> => <span class="predefined">array</span>(
    8.     <span class="predefined">array</span>(<span class="string"><span class="delimiter">'</span><span class="content">condition</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">id_parent=0</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">champ_type</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">objet</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">champ</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">id_objet</span><span class="delimiter">'</span></span>),
    9.     <span class="predefined">array</span>(<span class="string"><span class="delimiter">'</span><span class="content">condition</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">id_parent>0</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">type</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">forum</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">champ</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">id_parent</span><span class="delimiter">'</span></span>)
    10. )
    11. </span>

    Télécharger

    Et voilà, avec ça je crois qu’on doit bien gérer 99% des cas !

    Je vais implémenter ça dans le plugin "declarerparent" sur la zone, quitte du coup à devoir aller modifier le plugin Rang pour prendre en compte cette nouvelle écriture. Et du coup je vais l’utiliser dans le plugin Duplicator aussi, pour une autre vraie utilisation.

    Ça valait le coup d’attendre et de trouver des cas réels d’utilisation avant d’officialiser une écriture, car avec les forums ou autre dans le genre, on tombe bien sur des cas tordus qu’il fallait résoudre.

  • Anomalie #4447 : Incompatibilité image_typo et PHP 7.1+

    25 juin 2020

    J’ai fait une PR : https://git.spip.net/spip/filtres_images/pulls/3

    Et voici le squelette de test :

    <span class="CodeRay">[(#NOM_SITE_SPIP|image_typo)]<span class="tag">span> <span class="tag">/></span>
    [(#NOM_SITE_SPIP|image_typo{police=dustismo_bold.ttf})]<span class="tag">span> <span class="tag">/></span>
    [(#NOM_SITE_SPIP|image_typo{police=dustismo_bold.ttf,taille=32,padding=20,largeur=460,couleur=02265a})]<span class="tag">span> <span class="tag">/></span>
    </span></span></span></span>

    La première ligne concerne la variable non initialisée.
    La deuxième le chemin de la police
    La 3e la couleur avec une minuscule

    Testé sous Windows 10 / PHP Version 7.3.19

  • Evolution #4102 : Ordre des inclures dans cache/charger_plugins_options.php

    8 juillet 2019, par cam.lafit -

    Salut

    Ma solution n’est pas bonne non plus. On peut selon l’ordre d’appel devoir encapsuler le code d’un fichier options. Donc la solution de @placido est plus pertiente. Le patch suivant ne casse pas le comportement par défaut de SPIP et permet de charger avant un bout d’options.

    Soit le pluginA ayant besoin de surcharger les options de pluginB, si on fait pluginA/pre_pluginB_options.php alors l’ordre de chargement devrait être :

    • pluginA/pre_pluginB_options.php
    • pluginB/pluginB_options.php
    • pluginA/pluginA_options.php
    1. <span class="CodeRay"><span class="line head"><span class="head">--- </span><span class="filename"><sans nom="nom"></sans></span></span>
    2. <span class="line head"><span class="head">+++ </span><span class="filename"><sans nom="nom"></sans></span></span>
    3. <span class="line change"><span class="change">@@</span> -821,7 +821,25 <span class="change">@@</span></span>
    4.      $boutons = array();
    5.      $onglets = array();
    6.      $sign = "";
    7. <span class="line delete"><span class="delete">-</span></span>
    8. <span class="line insert"><span class="insert">+</span>    </span>
    9. <span class="line insert"><span class="insert">+</span>    /* pre fonctions/options charger un fichier avant celui du plugin concerné */</span>
    10. <span class="line insert"><span class="insert">+</span>    foreach ($ordre as $p => &#38;$info) {        </span>
    11. <span class="line insert"><span class="insert">+</span>        foreach($ordre as $plugin_pre_charge => $info_plugin_pre_charge) {        </span>
    12. <span class="line insert"><span class="insert">+</span>            $dir_type = $plugin_valides[$plugin_pre_charge]['dir_type'];</span>
    13. <span class="line insert"><span class="insert">+</span>            $plug = $plugin_valides[$plugin_pre_charge]['dir'];</span>
    14. <span class="line insert"><span class="insert">+</span>            $dir = constant($dir_type);</span>
    15. <span class="line insert"><span class="insert">+</span>            $root_dir_type = str_replace('_DIR_', '_ROOT_', $dir_type);</span>
    16. <span class="line insert"><span class="insert">+</span>            if (isset($plugin_valides[$plugin_pre_charge])) {</span>
    17. <span class="line insert"><span class="insert">+</span>                foreach ($contenu as $charge => $v) {        </span>
    18. <span class="line insert"><span class="insert">+</span>                    if (is_readable("$dir$plug/" . ($file = "pre_".$info['prefix'] . "_" . $charge . ".php"))) {</span>
    19. <span class="line insert"><span class="insert">+</span>                        $_file = $root_dir_type . ".'$plug/$file'";</span>
    20. <span class="line insert"><span class="insert">+</span>                        $contenu[$charge] .= "include_once_check($_file);\n";</span>
    21. <span class="line insert"><span class="insert">+</span>                    }                        </span>
    22. <span class="line insert"><span class="insert">+</span>                }</span>
    23. <span class="line insert"><span class="insert">+</span>            }</span>
    24. <span class="line insert"><span class="insert">+</span>        }</span>
    25. <span class="line insert"><span class="insert">+</span>    }</span>
    26. <span class="line insert"><span class="insert">+</span>    </span>
    27.      foreach ($ordre as $p => $info) {
    28.          // $ordre peur contenir des plugins en attente et non valides pour ce hit
    29.          if (isset($plugin_valides[$p])) {
    30.  
    31. </span>

    Télécharger