
Recherche avancée
Autres articles (43)
-
Multilang : améliorer l’interface pour les blocs multilingues
18 février 2011, parMultilang est un plugin supplémentaire qui n’est pas activé par défaut lors de l’initialisation de MediaSPIP.
Après son activation, une préconfiguration est mise en place automatiquement par MediaSPIP init permettant à la nouvelle fonctionnalité d’être automatiquement opérationnelle. Il n’est donc pas obligatoire de passer par une étape de configuration pour cela. -
Encoding and processing into web-friendly formats
13 avril 2011, parMediaSPIP automatically converts uploaded files to internet-compatible formats.
Video files are encoded in MP4, Ogv and WebM (supported by HTML5) and MP4 (supported by Flash).
Audio files are encoded in MP3 and Ogg (supported by HTML5) and MP3 (supported by Flash).
Where possible, text is analyzed in order to retrieve the data needed for search engine detection, and then exported as a series of image files.
All uploaded files are stored online in their original format, so you can (...) -
Contribute to translation
13 avril 2011You can help us to improve the language used in the software interface to make MediaSPIP more accessible and user-friendly. You can also translate the interface into any language that allows it to spread to new linguistic communities.
To do this, we use the translation interface of SPIP where the all the language modules of MediaSPIP are available. Just subscribe to the mailing list and request further informantion on translation.
MediaSPIP is currently available in French and English (...)
Sur d’autres sites (2879)
-
Anomalie #3048 (Nouveau) : Recherche et jointures - petit problème d’écrasement des résultats
30 août 2013, par Severo LipariPour reproduire le problème, créer un article, et attacher deux documents, avec les titres "Pingouin breton" et "Pingouin des Andes". Puis faire une recherche sur "Pingouin".
L’article est bien trouvé, grâce à la jointure entre l’article et les documents. Cependant il y a un léger problème.
Dans le détail, a) la recherche se fait pour tout la table
documents
[1]. On peut afficher le tableau de résultats2 pour cette table, les deux documents sont trouvés, et ont un score de2
correspondant au poids du titre :array ( 1 => array ( ’champs’ => array ( ’titre’ => ’Pingouin breton’, ), ’score’ => 2, ), 3 => array ( ’champs’ => array ( ’titre’ => ’Pingouin des andes’, ), ’score’ => 2, ), )
b) dans l’appel de la fonction correspondant à la table des articles, on sélectionne, parmi les documents trouvés, ceux qui sont liés à l’article (via la table
documents_liens
)[3]c) on remplit le tableau de résultats pour la table des articles4. Le résultat est le suivant
array ( 1 => // id_article array ( ’score’ => 4, // somme des deux scores (2 + 2) ’champs’ => array ( ’document.titre’ => ’Pingouin des andes’, // <= seulement le titre du deuxième document, le premier ayant été écrasé à cause de [5] ), ), )
Il faudrait donc prévoir un autre mécanisme pour permettre de rapporter tous les contenus correspondant aux occurrences trouvées. ça pourrait être quelque chose comme
array ( 1 => // id_article array ( ’score’ => 4, // somme des deux scores (2 + 2) ’champs’ => array ( ’document.titre’ => array ( 1 => ’Pingouin breton’, 3 => ’Pingouin des andes’ ), ), ), )
mais il faudrait voir les conséquences sur le reste du code.
[1] http://core.spip.org/projects/spip/repository/entry/spip/ecrire/inc/recherche_to_array.php#L141
[2] http://core.spip.org/projects/spip/repository/entry/spip/ecrire/inc/recherche_to_array.php#L221
[3] http://core.spip.org/projects/spip/repository/entry/spip/ecrire/inc/recherche_to_array.php#L177
[4] http://core.spip.org/projects/spip/repository/entry/spip/ecrire/inc/recherche_to_array.php#L193
[5] http://core.spip.org/projects/spip/repository/entry/spip/ecrire/inc/recherche_to_array.php#L209 -
Anomalie #3799 : appliquer_filtre ne s’applique pas aux filtres image_
10 février 2017L’intention que tu cites n’était peut être pas forcément le but de la fonction
appliquer_filtre()
à l’origine.Bon, j’ai un problème. Comme je disais en #note-7 il y a un bug sur appliquer filtre et l’option qui avait été ajoutée en r71781.
En plein dans le bug¶
Il y a un cas intéressant sur la zone dans SarkaSPIP, parmi d’autres :
[(#ENVid_rubrique|appliquer_filtreaccesrestreint_rubrique_restreinte,0|oui) #SETretour_logout, #URL_PAGEsommaire]
function accesrestreint_rubrique_restreinte($id_rubrique, $id_auteur = null)
Le zéro passé en second paramètre, on ne sait pas s’il était
- à destination deappliquer_filtre()
pour éviter absolument qu’il retourne la valeur id_rubrique SI accès restreint est absent, ou s’il était
- à destination deaccesrestreint_rubrique_restreinte()
pour indiquer l’auteur 0 (ce qui est peu probable)
Et du coup, ça casse le fonctionnement deaccesrestreint_rubrique_restreinte()
car ça ne prend pas en compte le visiteur courant car $id_auteur ne vaut plusnull
À d’autres endroits au contraire, par exemple dans Emballe Medias, on trouve :
[(#INCLUREjavascript/jquery.shiftcheckbox.js|appliquer_filtreminifier,js)]
Ici, la présence de l’option ’js’ fait que appliquer_filtre va comprendre qu’il doit toujours retourner le contenu d’origine même en absence du filtre.
C’est d’ailleurs très certainement ce qui est souhaité ici. Sauf que ce n’est pas voulu explicitement a priori.On trouve aussi un usage avec |sinon :
["geometry" : (#GEOMETRY|appliquer_filtrewkt_to_json|sinon"type" : "Point", "coordinates" : [#LON, #LAT]),]
Corrections de appliquer_filtre en créant une seconde fonction ?¶
Ces 2 derniers exemples montrent que quelque soit l’option choisie pour corriger on va casser des usages (en créant une seconde fonction pour faire l’inverse), ie :
Option Historique)
-T|appliquer_filtre{F}
retourne ’’ si F introuvable
-T|appliquer_filtre_ou_continuer
retourne T si F introuvableOption Chaînage)
-T|appliquer_filtre{F}
retourne T si F introuvable
-T|appliquer_filtre_sinon_rien{F}
retourne ’’ si F introuvableOu déprécier appliquer_filtre()¶
Une autre solution est de créer 2 nouvelles fonctions pour remplacer appliquer_filtre et son fonctionnement incertain.
Contrainte : elles ne doivent pas commencer parfiltre_
.
-T|utiliser_filtre{F}
retourne T si F introuvable (chaînage)
-T|utiliser_filtre_sinon_rien{F}
retourne ’’ si F introuvableC’est peut être une solution acceptable. On aurait du être plus vigilent en introduisant une nouvelle fonction plutôt qu’un paramètre en plus à appliquer_filtre() alors que celle ci utilise func_get_args…
-
Evolution #4727 (Nouveau) : Des pictos / icônes symboliques pour tout le monde
12 avril 2021Je fais un ticket pour la future PR et poser le plan d’action.
C’est la suite de https://core.spip.net/issues/4562#Des-ic%C3%B4nesProposition pour intégrer un jeu complet d’icônes symboliques.¶
Les besoins sont multiples pour pleins d’éléments d’interface, dans le core et les plugins : des barres d’outils, des boutons d’actions, etc.
Et chacun doit réimplémenter ça un peu à sa sauce, notamment dans le privé.C’est un besoin bien distinct des icônes svg de couleur dont on dispose actuellement dans le privé : on veut des pictos symboliques qui héritent de taille et de la couleur du texte, et issus d’un même set afin d’avoir un style unifié.
Cela vient donc en complément.Il s’agit donc de reprendre un jeu d’icônes existant, qu’on n’aura pas à maintenir, optimisé, et qui fournit des icônes cohérentes visuellement, utilisables dans tous les contextes. Cf. plus bas pour une comparaison initiale des candidats possibles.
Utilisation¶
Ces icônes seraient utilisables de 2 façons :
1) Des classes .spicon¶
Des classes à ajouter à n’importe quel élément inline quand il s’agit d’icônes purement décoratives.
Ces classes pouvant finir dans squelettes utilisés dans le public, pour éviter les conflits, on propose la contraption de spip + icon =spicon
. Il y a aussispip-icon
mais c’est un peu plus verbeux.Exemples :
<span class="CodeRay"><span class="tag">span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">spicon_menu</span><span class="delimiter">"</span></span><span class="tag">></span>Ouvrir le menu<span class="tag"></span>
<span class="tag">span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">spicon_truc</span><span class="delimiter">"</span></span><span class="tag">></span><span class="tag"></span> Du texte
<span class="tag">span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">titrem spicon_machin</span><span class="delimiter">"</span></span><span class="tag">></span>Mon titre<span class="tag"></span>
</span></span></span></span>2) Une balise #ICON¶
En complément, on peut vouloir embarquer une icône svg dans le HTML.
On propose de reprendre et d’adapter la balise #ICON du plugin Zcore, qui fait ça très bien.
Cette balise permet d’embarquer une icône du set par défaut, mais également n’importe quelle autre (je rentre pas dans les détails).Un modèle correspondant permettra aussi d’inclure des icônes svg dans les textes :
<span class="CodeRay">
#ICONE{identifiant}
#ICONE{chemin/vers/mon_icone.svg}
#ICONE{#identifiant_autre_set}
</span>Identifiants sémantiques¶
Les identifiants des icônes seront directement ceux du jeu d’icônes choisi.
Mais ils peuvent avoir des noms un peu barbares : chevron-double-right, eye-slash, grip-vertical, etc.Dans tous les cas on pourra les utiliser tels quels, mais en plus de ça, on propose de faire une correspondance sémantique pour les icônes correspondants aux actions les plus courantes. Par exemple au lieu de faire
#ICONE{chevron-double-down}
on pourra faire#ICONE{deplier}
.
Cela passerait par un pipeline, donc liste qui peut être complétée selon ses besoins.La liste initiale est visible ici : https://demo.hedgedoc.org/3zIXkcFLTVSwV0nKC1_qcA?both
Ressources privé / public¶
Cela veut dire 2 ressources à charger :
- Une font-face pour les classes
- Un sprite svg pour la balise
Dans le privé, il faut charger les 2.
Dans le public, cela pourrait se faire optionnellement, à la demande.Candidats¶
Pour finir un tableau comparatif des jeux d’icônes possibles (à licences libres), avec mes commentaires initiaux.
Petite préférence pour Feather actuellement.Lib Nb sprite fontface Commentaire Bootstrap 1300+ 693ko 85ko Clés en main, beaucoup d’icônes (trop ?) Feather 286 ( 100ko) - Styles rounded. Bonne balance nb icônes / poids. Octicon (Github) 433 ( 240ko) - Styles rounded. Bonne balance nb icônes / poids. Beaucoup de manips à faire pour créer sprite et cie. Material (Google) ? (?ko) 44ko Style rounded / épaisseur variable. Beaucoup de manips à faire pour créer sprite et cie. Google ! Core-ui 554 418ko 63ko Clés en main. Sets inutiles non pris en compte dans ce tableau (brands, flags, …) Bytesize 101 11ko - Style rounded / épaisseur variable. Léger : le minimum syndical. Sprite entre parenthèses = non fourni dans le dépôt ou la dist → poids théorique.