
Recherche avancée
Médias (1)
-
Carte de Schillerkiez
13 mai 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Texte
Autres articles (20)
-
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 (...) -
ANNEXE : Les plugins utilisés spécifiquement pour la ferme
5 mars 2010, parLe site central/maître de la ferme a besoin d’utiliser plusieurs plugins supplémentaires vis à vis des canaux pour son bon fonctionnement. le plugin Gestion de la mutualisation ; le plugin inscription3 pour gérer les inscriptions et les demandes de création d’instance de mutualisation dès l’inscription des utilisateurs ; le plugin verifier qui fournit une API de vérification des champs (utilisé par inscription3) ; le plugin champs extras v2 nécessité par inscription3 (...)
-
Supporting all media types
13 avril 2011, parUnlike most software and media-sharing platforms, MediaSPIP aims to manage as many different media types as possible. The following are just a few examples from an ever-expanding list of supported formats : images : png, gif, jpg, bmp and more audio : MP3, Ogg, Wav and more video : AVI, MP4, OGV, mpg, mov, wmv and more text, code and other data : OpenOffice, Microsoft Office (Word, PowerPoint, Excel), web (html, CSS), LaTeX, Google Earth and (...)
Sur d’autres sites (3490)
-
Evolution #4552 (En cours) : Appliquer tout le temps la classe demandée à lien_ou_expose
17 février 2021, par cedric -En fait vous voulez cette version là ?
https://git.spip.net/spip-contrib-extensions/bootstrap4/src/branch/master/bootstrap4_fonctions.php#L73Le paramètre on peut recevoir une chaine au lieu d’un bool, dans laquelle on précise la balise et la classe du markup exposé :
strong.on
,a.active
,span.lien-on
... C’est le plus souple que j’ai trouvé et qui est totalement compatible avec la signature d’origine -
Anomalie #3017 : Gestion des versions de plugins
18 avril 2020, par RastaPopoulos ♥Je passe ce ticket en anomalie, car il s’agit à mon sens très clairement d’un bug (et un gros) : l’ergonomie aussi peut être buguée.
Récemment, en peu de temps, plusieurs plugins ont eu des problèmes car les utilisateurs ont eu l’invitation de migrer à la dernière version alors qu’il y avait un saut de branche majeure (le X), sans aucun message de warning nulle part : spipr, saisies, prix… Et cela occasionne clairement des gros problèmes pour les gens, et donc bien du bug. Et encore, il ne s’agissait pas de mises à jour modifiant la base de données… là impossible même de revenir en arrière.
Je pense qu’il faut profiter de ce ticket déjà existant, pour réaffirmer que c’est un bug et réfléchir à une ergonomie cohérente quelque soit les différents endroits : liste des plugins et icône-bouton d’annonce de mise à jour, recherche des plugins et comment on voit les différentes versions, etc.
Je décris en texte, on verra si j’ai le temps de faire une maquette un jour…
Vue des plugins actifs :¶
C’est le cas le plus courant qui peut casser des choses chez les gens.
- L’indication de mise à jour classique ne devrait s’afficher que pour les mises à jour Y et Z
- Éventuellement un autre bouton différent indiquerait qu’il y a une mise à jour majeure X
- Les mises à jour quelles qu’elles soient (mineures ou majeures) ne devraient se voir que si l’état est aussi stable ou plus stable que l’actuel (c’est déjà le cas je crois)
- Parfois dans les releases il y a une mise à jour dans la même branche X et une autre changeant de X, dans ce cas on verrait bien deux indications et deux boutons différents
- Une option générale de SVP pourrait permettre de choisir si on signale les mises à jour majeure ou pas (si non, seules Y et Z seront signalées)
- Lorsqu’on choisit de mettre à jour à une version majeure supérieure, alors il devrait y avoir un méchant message ATTENTION, indiquant ce qu’on s’apprête à faire, ce qui permet d’annuler. Dans la phrase indiquant cela, il pourrait y avoir un lien vers la doc de la version majeure supérieure qu’on s’apprête à mettre. (Attention, vous allez changer la version majeure du plugin Patates en 3.3.3. Pensez à vérifier que cela ne va pas casser votre site : lien vers la doc)
- Pour les actions de masse, pareil, ça devrait afficher les mêmes messages, mais plusieurs à la fois dans la même boite.Au passage : comme on le voit, parfois il est possible qu’on ait besoin d’ajouter des actions supplémentaires aux plugins. Il serait sûrement profitable de revoir une organisation cohérente des boutons comme discuté dans ce ticket : #4429 (et non pas certains en picto, certains en hover, etc). Notamment aussi car c’est toujours mieux quand on arrive à avoir des labels (d’autant plus si on doit différencier mise à jour mineure et majeure).
Vue des plugins présents inactifs :¶
On ne parle ici que des plugins non actifs ayant déjà une version activée (les autres on s’en fiche, ya rien à dire c’est une installation classique). Si on les a téléchargé et que c’est bien compat avec la version SPIP générale, on doit toujours les voir, seuls les obsolètes sont cachés par défaut.
- Si dans les inactifs il y a une version supérieure mais mineure d’un plugin déjà actif, on le voit et on peut l’activer et aucun message particulier
- S’il y a une version supérieure majeure d’un plugin déjà actif, on doit le voir aussi mais dans son cadre, il pourrait déjà y avoir une indication que ce plugin est déjà en cours d’utilisation et que cette version est un changement majeur. Et ensuite quand on essaye de l’activer, on devrait avoir le même message ATTENTION que décrit précédemment dans la boite qui s’ouvre.
- Contrairement au premier onglet, là on doit voir aussi les versions même si l’état est moins stable (si ya un "test" alors que celui actif est "stable") : si on l’a téléchargé c’est qu’on veut le voir et pouvoir l’activer
- On ne voit pas les versions plus petites que celles actives, car certaines plugins ont des structures de base, et là ça peut pas marcher de revenir en arrière. Celles là sont cachées si une version plus haute est active, mais on les voit si jamais installé par contre.Recherche des plugins :¶
Actuellement l’interface ne montre que la dernière version, ce qui ne va pas du tout. De plus quand un plugin est déjà installé, ce plugin sort bien dans les résultats de recherche (avec "déjà installé") mais impossible de le télécharger même si la version indiquée dans la recherche est supérieure à celle en cours.
Pour cet onglet, c’est plus que des corrections, il faudrait vraiment refaire pour voir au moins la dernière version de chaque X (voire de chaque X.Y) de chaque plugin. Que ce soit pour des plugins qu’on a pas du tout et pour des plugins déjà installés.
Si j’ai le plugin Patates 3.13.0 installé, et qu’il a plusieurs mises à jour de plusieurs branches, alors dans la recherche je devrais voir :
- La version 4.0.2 (avec un Attention)
- La version 3.15.1
- La version 3.13.4Si le plugin n’est pas du tout installé (et n’a jamais été installé ou a été bien désinstallé, bref : qu’il n’a plus son "base_version" du tout !) alors on devrait voir plus, et voir aussi la 2.4.5 etc, si on sait qu’on veut installer telle plus vieille version.
On pourrait voir un bloc par plugin, et à l’intérieur, au lieu d’une seule case à cocher, sous le titre et slogan, on aurait une liste des versions, chacune avec sa case à cocher.
-
Evolution #4427 (En cours) : Permettre (via une constante) de passer de 65 536 à 4096 le nombre ma...
24 janvier 2020, par - EquipementBonjour,
Concernant le cache de second niveau de SPIP, c’est-à-dire celui qui contient le résultat du calcul des squelettes :Jusqu’à la branche 3.0 de SPIP la taille maximum du cache était par défaut de 10 Mo.
A partir de la branche 3.1 de SPIP, le nombre maximal de fichier dans le cache est de 65 536 (et il n’y a plus de limite sur la taille du cache).
Sur un cas réel, le cache a atteint 2 Go (soit une moyenne de 31 Ko par fichier).
Certains hébergeurs ont un quota sur la taille, mais également sur le nombre d’inodes.
Dans un cas réel, des sites ont ainsi atteint le quota d’inodes, ce qui empêchait l’accès à l’espace privé des sites (cf. contrib.spip.net/Plugins-Giseh#comment502510).Remarque : L’expérience montre que le passage d’un robot, qui n’est pas identifié par SPIP, peut suffit à garnir le cache. Or la liste des robots détectés par SPIP ne sera jamais exhaustive. Par ailleurs, pour certains robots (aspirateurs de sites ou autre) il est possible de modifier leur user-agent.
Aussi, je propose que, via l’ajout d’une constante dans le fichier mes_options, il soit possible de fixer le nombre maximal de fichier dans le cache à 4096 (au lieu de 65 536). Cette approche, par constante optionnelle, évite d’impacter les sites qui veulent conserver la limite de 65 536 fichiers.
En pratique, il s’agit d’offrir la possibilité de mettre dans le fichier mes_options la constante suivante :
- <span class="CodeRay"><span class="predefined">define</span>(<span class="string"><span class="delimiter">'</span><span class="content">_CACHE_MAX_4096_FILES</span><span class="delimiter">'</span></span>,<span class="predefined-constant">true</span>) ;
- </span>
et de prendre en compte cette constante dans le fichier ecrire/public/cacher.php de la manière suivante :
- <span class="CodeRay"><span class="keyword">function</span> <span class="function">ecrire_cache</span>(<span class="local-variable">$nom_cache</span>, <span class="local-variable">$valeur</span>) {
- <span class="comment">// $d = substr($nom_cache, 0, 2);</span>
- <span class="comment">// $u = substr($nom_cache, 2, 2);</span>
- <span class="local-variable">$longueur_d</span> = <span class="integer">2</span>;
- <span class="keyword">if</span> (<span class="predefined">defined</span>(<span class="string"><span class="delimiter">'</span><span class="content">_CACHE_MAX_4096_FILES</span><span class="delimiter">'</span></span>) <span class="keyword">AND</span> _CACHE_MAX_4096_FILES){
- <span class="local-variable">$longueur_d</span> = <span class="integer">1</span>;
- }
- <span class="local-variable">$d</span> = <span class="predefined">substr</span>(<span class="local-variable">$nom_cache</span>, <span class="integer">0</span>, <span class="local-variable">$longueur_d</span>);
- <span class="local-variable">$u</span> = <span class="predefined">substr</span>(<span class="local-variable">$nom_cache</span>, <span class="local-variable">$longueur_d</span>, <span class="integer">2</span>);
- <span class="local-variable">$rep</span> = _DIR_CACHE;
- <span class="local-variable">$rep</span> = sous_repertoire(<span class="local-variable">$rep</span>, <span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>, <span class="predefined-constant">false</span>, <span class="predefined-constant">true</span>);
- <span class="local-variable">$rep</span> = sous_repertoire(<span class="local-variable">$rep</span>, <span class="local-variable">$d</span>, <span class="predefined-constant">false</span>, <span class="predefined-constant">true</span>);
- <span class="keyword">return</span> ecrire_fichier(<span class="local-variable">$rep</span> . <span class="local-variable">$u</span> . <span class="string"><span class="delimiter">"</span><span class="content">.cache</span><span class="delimiter">"</span></span>, <span class="predefined">serialize</span>(<span class="predefined">array</span>(<span class="string"><span class="delimiter">"</span><span class="content">nom_cache</span><span class="delimiter">"</span></span> => <span class="local-variable">$nom_cache</span>, <span class="string"><span class="delimiter">"</span><span class="content">valeur</span><span class="delimiter">"</span></span> => <span class="local-variable">$valeur</span>)));
- }
- <span class="keyword">function</span> <span class="function">lire_cache</span>(<span class="local-variable">$nom_cache</span>) {
- <span class="comment">// $d = substr($nom_cache, 0, 2);</span>
- <span class="comment">// $u = substr($nom_cache, 2, 2);</span>
- <span class="local-variable">$longueur_d</span> = <span class="integer">2</span>;
- <span class="keyword">if</span> (<span class="predefined">defined</span>(<span class="string"><span class="delimiter">'</span><span class="content">_CACHE_MAX_4096_FILES</span><span class="delimiter">'</span></span>) <span class="keyword">AND</span> _CACHE_MAX_4096_FILES){
- <span class="local-variable">$longueur_d</span> = <span class="integer">1</span>;
- }
- <span class="local-variable">$d</span> = <span class="predefined">substr</span>(<span class="local-variable">$nom_cache</span>, <span class="integer">0</span>, <span class="local-variable">$longueur_d</span>);
- <span class="local-variable">$u</span> = <span class="predefined">substr</span>(<span class="local-variable">$nom_cache</span>, <span class="local-variable">$longueur_d</span>, <span class="integer">2</span>);
- <span class="keyword">if</span> (<span class="predefined">file_exists</span>(<span class="local-variable">$f</span> = _DIR_CACHE . <span class="string"><span class="delimiter">"</span><span class="local-variable">$d</span><span class="content">/</span><span class="local-variable">$u</span><span class="content">.cache</span><span class="delimiter">"</span></span>)
- <span class="keyword">and</span> lire_fichier(<span class="local-variable">$f</span>, <span class="local-variable">$tmp</span>)
- <span class="keyword">and</span> <span class="local-variable">$tmp</span> = <span class="predefined">unserialize</span>(<span class="local-variable">$tmp</span>)
- <span class="keyword">and</span> <span class="local-variable">$tmp</span>[<span class="string"><span class="delimiter">'</span><span class="content">nom_cache</span><span class="delimiter">'</span></span>] == <span class="local-variable">$nom_cache</span>
- <span class="keyword">and</span> <span class="predefined">isset</span>(<span class="local-variable">$tmp</span>[<span class="string"><span class="delimiter">'</span><span class="content">valeur</span><span class="delimiter">'</span></span>])
- ) {
- <span class="keyword">return</span> <span class="local-variable">$tmp</span>[<span class="string"><span class="delimiter">'</span><span class="content">valeur</span><span class="delimiter">'</span></span>];
- }
- <span class="keyword">return</span> <span class="predefined-constant">false</span>;
- }
- </span>
Cordialement
Equipement