Recherche avancée

Médias (91)

Autres articles (37)

  • Des sites réalisés avec MediaSPIP

    2 mai 2011, par

    Cette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
    Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page.

  • De l’upload à la vidéo finale [version standalone]

    31 janvier 2010, par

    Le chemin d’un document audio ou vidéo dans SPIPMotion est divisé en trois étapes distinctes.
    Upload et récupération d’informations de la vidéo source
    Dans un premier temps, il est nécessaire de créer un article SPIP et de lui joindre le document vidéo "source".
    Au moment où ce document est joint à l’article, deux actions supplémentaires au comportement normal sont exécutées : La récupération des informations techniques des flux audio et video du fichier ; La génération d’une vignette : extraction d’une (...)

  • Librairies et binaires spécifiques au traitement vidéo et sonore

    31 janvier 2010, par

    Les logiciels et librairies suivantes sont utilisées par SPIPmotion d’une manière ou d’une autre.
    Binaires obligatoires FFMpeg : encodeur principal, permet de transcoder presque tous les types de fichiers vidéo et sonores dans les formats lisibles sur Internet. CF ce tutoriel pour son installation ; Oggz-tools : outils d’inspection de fichiers ogg ; Mediainfo : récupération d’informations depuis la plupart des formats vidéos et sonores ;
    Binaires complémentaires et facultatifs flvtool2 : (...)

Sur d’autres sites (4979)

  • Anomalie #4831 (Nouveau) : URLs arbo non mise à jour au changement de rubrique

    23 juin 2021, par Julien Tessier

    Etapes pour reproduire :

    • Utiliser les URL arbos
    • Créer un article "Lorem ipsum" dans la rubrique 1
    • Publier l’article, son URL est /rubrique-1/lorem-ipsum
    • Créer un article "Lorem ipsum" dans la rubrique 2
    • Proposer l’article à la publication, son URL est /rubrique-2/lorem-ipsum
    • Déplacer l’article dans la rubrique 1
    • SPIP génère une erreur dans les logs :
      2021-06-23 11:32:54 127.0.0.1 (pid 498) :Pri:ERREUR : Erreur 1062 de mysql : Duplicate entry ’1-lorem-ipsum’ for key ’PRIMARY’
      in .../plugins-dist/urls_etendues/action/editer_url.php L155 [sql_insertq(),url_insert(),declarer_url_arbo(),_generer_url_arbo(),urls_arbo_dist(),generer_url_entite(),html_af5c93b1e9d12543df40c819344ffc73(),public_parametrer_dist(),public_produire_page_dist(),inclure_page(),evaluer_fond(),recuperer_fond(),urls_afficher_fiche_objet(),minipipe(),execute_pipeline_afficher_fiche_objet(),pipeline(),f_afficher_blocs_ecrire(),f_recuperer_fond(),minipipe(),execute_pipeline_recuperer_fond(),pipeline(),recuperer_fond(),traiter_appels_inclusions_ajax()]
      
    • Publier l’article
    • L’URL du nouvel article est inchangée donc il est inaccessible (= son URL a déjà été "prise" par un autre)

    Comportement attendu

    Au changement de rubrique, URL arbos regénère une URL unique (avec l’ID donc).

    Résolution temporaire

    J’ai réglé ça de la manière suivante, via un plugin et la pipeline post_edition :

    1. <span class="CodeRay"><span class="keyword">function</span> <span class="function">plugin_post_edition</span>(<span class="local-variable">$e</span>) {
    2.     <span class="keyword">switch</span> (objet_type(<span class="local-variable">$e</span>[<span class="string"><span class="delimiter">'</span><span class="content">args</span><span class="delimiter">'</span></span>][<span class="string"><span class="delimiter">'</span><span class="content">table</span><span class="delimiter">'</span></span>])) {
    3.         <span class="keyword">case</span> <span class="string"><span class="delimiter">'</span><span class="content">article</span><span class="delimiter">'</span></span>;
    4.             <span class="keyword">if</span> (!<span class="predefined">empty</span>(<span class="local-variable">$e</span>[<span class="string"><span class="delimiter">'</span><span class="content">data</span><span class="delimiter">'</span></span>][<span class="string"><span class="delimiter">'</span><span class="content">id_rubrique</span><span class="delimiter">'</span></span>])) {
    5.                 <span class="local-variable">$id_rubrique</span> = <span class="predefined">intval</span>(<span class="local-variable">$e</span>[<span class="string"><span class="delimiter">'</span><span class="content">data</span><span class="delimiter">'</span></span>][<span class="string"><span class="delimiter">'</span><span class="content">id_rubrique</span><span class="delimiter">'</span></span>]);
    6.                 <span class="local-variable">$id_article</span> = <span class="predefined">intval</span>(<span class="local-variable">$e</span>[<span class="string"><span class="delimiter">'</span><span class="content">args</span><span class="delimiter">'</span></span>][<span class="string"><span class="delimiter">'</span><span class="content">id_objet</span><span class="delimiter">'</span></span>]);
    7.                 <span class="keyword">if</span> (<span class="local-variable">$url</span> = sql_fetsel(<span class="string"><span class="delimiter">'</span><span class="content">url</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">spip_urls</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">"</span><span class="content">type = 'article' AND id_objet = </span><span class="local-variable">$id_article</span><span class="delimiter">"</span></span>, <span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">perma DESC, date DESC</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">1</span><span class="delimiter">'</span></span>)) {
    8.                     <span class="local-variable">$url</span> = <span class="local-variable">$url</span>[<span class="string"><span class="delimiter">'</span><span class="content">url</span><span class="delimiter">'</span></span>];
    9.                     <span class="keyword">if</span> (sql_countsel(<span class="string"><span class="delimiter">'</span><span class="content">spip_urls</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">"</span><span class="content">url = </span><span class="delimiter">"</span></span>.sql_quote(<span class="local-variable">$url</span>).<span class="string"><span class="delimiter">"</span><span class="content"> AND type = 'article' AND id_parent = </span><span class="local-variable">$id_rubrique</span><span class="content"> AND id_objet != </span><span class="local-variable">$id_article</span><span class="delimiter">"</span></span>)) {
    10.                         sql_delete(<span class="string"><span class="delimiter">'</span><span class="content">spip_urls</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">"</span><span class="content">type = 'article' AND id_objet = </span><span class="local-variable">$id_article</span><span class="content"> AND url = </span><span class="delimiter">"</span></span>.sql_quote(<span class="local-variable">$url</span>));
    11.                     }
    12.                 }
    13.             }
    14.             <span class="keyword">break</span>;
    15.         <span class="keyword">default</span>:
    16.             <span class="keyword">break</span>;
    17.     }
    18.     <span class="keyword">return</span> <span class="local-variable">$e</span>;
    19. }
    20. </span>

    Télécharger

    Ce n’est peut être pas élégant mais ça marche en attendant un fix :)

  • Anomalie #4777 (Nouveau) : Les labels et chaines de langue avec ou sans deux points.

    8 mai 2021

    Des labels avec ou sans deux points...

    Les chaines de langues des labels, historiques de SPIP, ont parfois des deux points, parfois pas.

    Donc dès fois 'truc' => 'Truc', dès fois 'truc' => 'Truc :'
    C’est embêtant quand on veut quelque chose d’homogène.

    On se propose ici de réfléchir à une transition vers des chaines "sans deux points".

    uniformiser_label

    J’ai déjà introduit (dans SPIP 4.0-alpha) une fonction / filtre dans inc/utils.php et utilisée dans le plugin ’statistiques’ : uniformiser_label.
    Ce filtre, dans un squelette avec un idiome tel que &lt;:module:chaine|uniformiser_label:> enlève les espaces divers et : qui pourraient être présents.

    uniformiser_label_inline ?

    Il faudrait trouver un autre filtre pour faire l’inverse : mettre systématiquement les deux points. Notamment pour des couples ou énumérations sur la même ligne "label : texte".
    Trouver un nom du filtre pour ça n’est pas évident ; par contre on pense avoir trouvé à peu près la méthode

    1. <span class="CodeRay"><span class="keyword">function</span> <span class="function">uniformiser_label_inline</span>(<span class="predefined-type">string</span> <span class="local-variable">$label</span>) : <span class="predefined-type">string</span> {
    2.     <span class="local-variable">$label</span> = uniformiser_label(<span class="local-variable">$label</span>);
    3.     <span class="keyword">return</span> _T(<span class="string"><span class="delimiter">'</span><span class="content">uniformiser_label_inline</span><span class="delimiter">'</span></span>, [<span class="string"><span class="delimiter">'</span><span class="content">label</span><span class="delimiter">'</span></span> => <span class="local-variable">$label</span>]);
    4. }
    5. <span class="comment">// avec la chaine de langue (pareil nom à trouver)</span>
    6. [
    7.     <span class="comment">// ...</span>
    8.     <span class="string"><span class="delimiter">'</span><span class="content">uniformiser_label_inline</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">@label@ :</span><span class="delimiter">'</span></span>
    9. ]
    10. </span>

    Télécharger

    ou… uniformiser_label_enumeration

    Une autre solution pour la même chose, est de proposer de s’occuper directement des textes de couples "nom : texte" ou "nom : texte, texte, texte."
    Mais c’est peut être plus difficile pour gérer les traductions

    Exemple

    1. <span class="CodeRay"><span class="keyword">function</span> <span class="function">uniformiser_label_enumeration</span>(<span class="predefined-type">string</span> <span class="local-variable">$label</span>, ...<span class="local-variable">$enums</span> = []) : <span class="predefined-type">string</span> {
    2.     <span class="local-variable">$label</span> = uniformiser_label(<span class="local-variable">$label</span>);
    3.     <span class="comment">// la première entrée peut être un déjà un tableau ?</span>
    4.     <span class="keyword">if</span> (<span class="local-variable">$enums</span> <span class="keyword">and</span> <span class="predefined">is_array</span>(<span class="local-variable">$enums</span>[<span class="integer">0</span>])) {
    5.         <span class="local-variable">$enums</span>[<span class="integer">0</span>] = <span class="predefined">implode</span>(<span class="string"><span class="delimiter">'</span><span class="content">, </span><span class="delimiter">'</span></span>, <span class="local-variable">$enums</span>[<span class="integer">0</span>]);
    6.     }
    7.     <span class="local-variable">$enums</span> = <span class="predefined">implode</span>(<span class="string"><span class="delimiter">'</span><span class="content">, </span><span class="delimiter">'</span></span>, <span class="local-variable">$enums</span>);
    8.     <span class="keyword">return</span> <span class="predefined">trim</span>(_T(<span class="string"><span class="delimiter">'</span><span class="content">label_enumeration</span><span class="delimiter">'</span></span>, [<span class="string"><span class="delimiter">'</span><span class="content">label</span><span class="delimiter">'</span></span> => <span class="local-variable">$label</span>, <span class="string"><span class="delimiter">'</span><span class="content">enums</span><span class="delimiter">'</span></span> => <span class="local-variable">$enums</span>]));
    9. }
    10. <span class="comment">// avec la chaine de langue (pareil nom à trouver)</span>
    11. [
    12.     <span class="comment">// ...</span>
    13.     <span class="string"><span class="delimiter">'</span><span class="content">label_enumeration</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">@label@ : @enums@.</span><span class="delimiter">'</span></span>
    14. ]
    15. </span>

    Télécharger

    Ça veut dire ici que toutes les langues ont "virgule" en séparateur…

    Quelques notes sur les deux points

    Je suppose qu’ulitiser le terme "deux_points" dans les chaines de langue ne marche pas car ce n’est pas très sémantique. Mais pas facile de trouver un super terme.

    https://www.noslangues-ourlanguages.gc.ca/fr/cles-de-la-redaction/deux-points

    « On utilise le deux-points pour annoncer ce qui s’en vient dans le texte, que ce soit un exemple, une énumération, une explication, une citation, un discours direct, une analyse ou un récit. Le deux-points sert aussi à annoncer un jugement, une synthèse, une conclusion, une cause, une conséquence, etc. »

  • Evolution #4802 (Nouveau) : Styles des onglets simples du privé

    29 mai 2021

    Un ticket pour réfléchir aux styles des onglets simples du privé : .onglets_simple + .onglets_simple.second.
    C’est ceux que l’on voit dans la médiathèque et dans la page des plugins.

    Je traite séparément les onglets de 1er niveau et ceux de 2ème niveau, ce sont quasiment des composants différents.

    Onglets 1er niveau

    Visuellement je pense qu’on n’est pas obligé de reprendre pile poil la métaphore des onglets.
    Pour le moment j’ai une préférence pour une vue à la sauce material, simple et sobre : https://material.io/components/tabs
    L’avantage c’est qu’il fonctionnent aussi très bien à la verticale, si jamais on veut ajouter ça plus tard.
    C’est la piste choisie pour les onglets du plugin Saisies par exemple.

    Onglets 2ème niveau

    Là il s’agit plutôt de filtres. Et il peut y avoir plusieurs groupes de filtres sur une même ligne (cf. médiathèque et plugins).
    Je ne me suis pas encore trop appesanti sur le sujet, mais dans l’idée ça semble quand même assez proche d’un truc qui existe par ailleurs avec les groupe de boutons, qui contiennent des boutons actifs/inactifs : .groupe-btns_menu (exemple visible sur la page des stats.)
    Donc ça pourrait être assez proche. Mais au risque d’apporter de la confusion entre les 2 ?
    Bref, si vous avez des idées...