
Recherche avancée
Autres articles (50)
-
HTML5 audio and video support
13 avril 2011, parMediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
For older browsers the Flowplayer flash fallback is used.
MediaSPIP allows for media playback on major mobile platforms with the above (...) -
Support audio et vidéo HTML5
10 avril 2011MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...) -
De l’upload à la vidéo finale [version standalone]
31 janvier 2010, parLe 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 (...)
Sur d’autres sites (10842)
-
Evolution #4802 (Nouveau) : Styles des onglets simples du privé
29 mai 2021Un 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... -
Anomalie #4777 (Nouveau) : Les labels et chaines de langue avec ou sans deux points.
8 mai 2021Des 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<: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- <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> {
- <span class="local-variable">$label</span> = uniformiser_label(<span class="local-variable">$label</span>);
- <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>]);
- }
- <span class="comment">// avec la chaine de langue (pareil nom à trouver)</span>
- [
- <span class="comment">// ...</span>
- <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>
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 traductionsExemple
- <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> {
- <span class="local-variable">$label</span> = uniformiser_label(<span class="local-variable">$label</span>);
- <span class="comment">// la première entrée peut être un déjà un tableau ?</span>
- <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>])) {
- <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>]);
- }
- <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>);
- <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>]));
- }
- <span class="comment">// avec la chaine de langue (pareil nom à trouver)</span>
- [
- <span class="comment">// ...</span>
- <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>
- ]
- </span>
Ç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. »
-
Anomalie #4831 (Nouveau) : URLs arbo non mise à jour au changement de rubrique
23 juin 2021, par Julien TessierEtapes 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 :
- <span class="CodeRay"><span class="keyword">function</span> <span class="function">plugin_post_edition</span>(<span class="local-variable">$e</span>) {
- <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>])) {
- <span class="keyword">case</span> <span class="string"><span class="delimiter">'</span><span class="content">article</span><span class="delimiter">'</span></span>;
- <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>])) {
- <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>]);
- <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>]);
- <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>)) {
- <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>];
- <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>)) {
- 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>));
- }
- }
- }
- <span class="keyword">break</span>;
- <span class="keyword">default</span>:
- <span class="keyword">break</span>;
- }
- <span class="keyword">return</span> <span class="local-variable">$e</span>;
- }
- </span>
Ce n’est peut être pas élégant mais ça marche en attendant un fix :)